Merge pull request #23770 from dmatej/fix-ejb-tests

Fixed ejb tests + Fixed generating EJB classes
diff --git a/Jenkinsfile b/Jenkinsfile
index f18592d..8404eac 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2018-2021 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
@@ -14,40 +15,23 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-
 // the label is unique and identifies the pod descriptor and its resulting pods
 // without this, the agent could be using a pod created from a different descriptor
 env.label = "glassfish-ci-pod-${UUID.randomUUID().toString()}"
 
-// list of test ids
+// Docker image defined in this project in [glassfish]/etc/docker/Dockerfile
+env.gfImage = "ee4jglassfish/ci:tini-jdk-11.0.10"
+
 def jobs = [
-  "cdi_all",
-  "ql_gf_full_profile_all",
-  "ql_gf_web_profile_all",
-  "web_jsp"
-]
-
-
-def jobs_all = [
+  "verifyPhase",
   "cdi_all",
   "ql_gf_full_profile_all",
   "ql_gf_web_profile_all",
   "web_jsp",
-
-  "deployment_all",
   "ejb_group_1",
   "ejb_group_2",
   "ejb_group_3",
-  "ejb_web_all",
-  "ql_gf_nucleus_all",
-  "nucleus_admin_all",
-  "jdbc_all",
-  "batch_all",
-  "persistence_all",
-  "connector_group_1",
-  "connector_group_2",
-  "connector_group_3",
-  "connector_group_4"
+  "ejb_group_embedded"
 ]
 
 def parallelStagesMap = jobs.collectEntries {
@@ -55,106 +39,113 @@
 }
 
 def generateStage(job) {
-    return {
-        podTemplate(label: env.label) {
-            node(label) {
-                stage("${job}") {
-                    container('glassfish-ci') {
-                      // do the scm checkout
-                      retry(10) {
-                        sleep 60
-                        checkout scm
-                      }
+  if (job == 'verifyPhase') {
+    return generateMvnPodTemplate(job)
+  } else {
+    return generateAntPodTemplate(job)
+  }
+}
 
-                      // run the test
-                      unstash 'build-bundles'
-
-                      try {
-                          retry(3) {
-                              timeout(time: 2, unit: 'HOURS') {
-                                sh """
-                                  export CLASSPATH=$WORKSPACE/glassfish6/javadb
-                                  ./appserver/tests/gftest.sh run_test ${job}
-                                """
-                              }
-                          }
-                      } finally {
-                        // archive what we can...
-                        archiveArtifacts artifacts: "${job}-results.tar.gz"
-                        junit testResults: 'results/junitreports/*.xml', allowEmptyResults: false
-                      }
-                    }
-                }
+def generateMvnPodTemplate(job) {
+  return {
+    podTemplate(
+      inheritFrom: "${env.label}",
+      containers: [
+        containerTemplate(
+          name: "glassfish-build",
+          image: "${env.gfImage}",
+          resourceRequestMemory: "7Gi",
+          resourceRequestCpu: "2650m"
+        )
+      ]
+    ) {
+      node(label) {
+        stage("${job}") {
+          container('glassfish-build') {
+            retry(5) {
+              sleep 1
+              checkout scm
             }
+            timeout(time: 1, unit: 'HOURS') {
+              sh """
+                mvn clean install
+              """
+              junit testResults: '**/*-reports/*.xml', allowEmptyResults: false
+            }
+          }
         }
+      }
     }
+  }
+}
+
+def generateAntPodTemplate(job) {
+  return {
+    podTemplate(
+      inheritFrom: "${env.label}",
+      containers: [
+        containerTemplate(
+          name: "glassfish-build",
+          image: "${env.gfImage}",
+          resourceRequestMemory: "4Gi",
+          resourceRequestCpu: "2650m"
+        )
+      ]
+    ) {
+      node(label) {
+        stage("${job}") {
+          container('glassfish-build') {
+            retry(5) {
+              sleep 1
+              checkout scm
+            }
+            unstash 'build-bundles'
+            try {
+              timeout(time: 1, unit: 'HOURS') {
+                sh """
+                  export CLASSPATH=$WORKSPACE/glassfish6/javadb
+                  ./appserver/tests/gftest.sh run_test ${job}
+                """
+              }
+            } finally {
+              archiveArtifacts artifacts: "${job}-results.tar.gz"
+              junit testResults: 'results/junitreports/*.xml', allowEmptyResults: false
+            }
+          }
+        }
+      }
+    }
+  }
 }
 
 pipeline {
 
-  options {
-    // keep at most 50 builds
-    buildDiscarder(logRotator(numToKeepStr: '10'))
-
-    // preserve the stashes to allow re-running a test stage
-    preserveStashes()
-
-    // issue related to default 'implicit' checkout, disable it
-    skipDefaultCheckout()
-
-    // abort pipeline if previous stage is unstable
-    skipStagesAfterUnstable()
-
-    // show timestamps in logs
-    timestamps()
-
-    // global timeout, abort after 6 hours
-    timeout(time: 6, unit: 'HOURS')
-  }
-
   agent {
     kubernetes {
       label "${env.label}"
-      defaultContainer 'glassfish-ci'
       yaml """
 apiVersion: v1
 kind: Pod
 metadata:
 spec:
-  volumes:
-    - name: "jenkins-home"
-      emptyDir: {}
-    - name: maven-repo-shared-storage
-      persistentVolumeClaim:
-       claimName: glassfish-maven-repo-storage
-    - name: settings-xml
-      secret:
-        secretName: m2-secret-dir
-        items:
-        - key: settings.xml
-          path: settings.xml
-    - name: settings-security-xml
-      secret:
-        secretName: m2-secret-dir
-        items:
-        - key: settings-security.xml
-          path: settings-security.xml
-    - name: maven-repo-local-storage
-      emptyDir: {}
   containers:
   - name: jnlp
-    image: jenkins/jnlp-slave:alpine
+    image: jenkins/inbound-agent:4.11-1-alpine-jdk11
     imagePullPolicy: IfNotPresent
     env:
       - name: JAVA_TOOL_OPTIONS
-        value: -Xmx1G
+        value: "-Xmx768m -Xss768k"
     resources:
+      # fixes random failure: minimum cpu usage per Pod is 200m, but request is 100m.
+      # affects performance on large repositories
       limits:
-        memory: "1Gi"
-        cpu: "1"
-  - name: glassfish-ci
-    # Docker image defined in this project in [glassfish]/etc/docker/Dockerfile
-    image: ee4jglassfish/ci:tini-jdk-11.0.10
+        memory: "1200Mi"
+        cpu: "300m"
+      requests:
+        memory: "1200Mi"
+        cpu: "300m"
+  - name: glassfish-build
+    image: ${env.gfImage}
     args:
     - cat
     tty: true
@@ -177,13 +168,38 @@
         mountPath: "/home/jenkins/.m2/repository/org/glassfish/main"
     env:
       - name: "MAVEN_OPTS"
-        value: "-Duser.home=/home/jenkins"
+        value: "-Duser.home=/home/jenkins -Xmx2500m -Xss768k -XX:+UseStringDeduplication"
       - name: "MVN_EXTRA"
         value: "--batch-mode -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
+      - name: JAVA_TOOL_OPTIONS
+        value: "-Xmx2g -Xss768k -XX:+UseStringDeduplication"
     resources:
       limits:
+        memory: "12Gi"
+        cpu: "8000m"
+      requests:
         memory: "7Gi"
-        cpu: "3"
+        cpu: "4000m"
+  volumes:
+    - name: "jenkins-home"
+      emptyDir: {}
+    - name: maven-repo-shared-storage
+      persistentVolumeClaim:
+        claimName: glassfish-maven-repo-storage
+    - name: settings-xml
+      secret:
+        secretName: m2-secret-dir
+        items:
+        - key: settings.xml
+          path: settings.xml
+    - name: settings-security-xml
+      secret:
+        secretName: m2-secret-dir
+        items:
+        - key: settings-security.xml
+          path: settings-security.xml
+    - name: maven-repo-local-storage
+      emptyDir: {}
 """
     }
   }
@@ -198,7 +214,27 @@
     PORT_HTTPS=8181
   }
 
+  options {
+    buildDiscarder(logRotator(numToKeepStr: '10'))
+
+    // to allow re-running a test stage
+    preserveStashes()
+
+    // issue related to default 'implicit' checkout, disable it
+    skipDefaultCheckout()
+
+    // abort pipeline if previous stage is unstable
+    skipStagesAfterUnstable()
+
+    // show timestamps in logs
+    timestamps()
+
+    // global timeout, abort after 6 hours
+    timeout(time: 6, unit: 'HOURS')
+  }
+
   stages {
+
     stage('build') {
       agent {
         kubernetes {
@@ -206,13 +242,9 @@
         }
       }
       steps {
-        container('glassfish-ci') {
+        container('glassfish-build') {
           timeout(time: 1, unit: 'HOURS') {
-
-            // do the scm checkout
             checkout scm
-
-            // do the build
             sh '''
               echo Maven version
               mvn -v
@@ -223,10 +255,12 @@
               echo Uname
               uname -a
 
-              bash -xe ./gfbuild.sh build_re_dev
+              # 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
+              ls -la ./bundles
             '''
             archiveArtifacts artifacts: 'bundles/*.zip'
-            // junit testResults: 'test-results/build-unit-tests/results/junitreports/test_results_junit.xml'
             stash includes: 'bundles/*', name: 'build-bundles'
           }
         }
diff --git a/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/CLIBootstrap.java b/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/CLIBootstrap.java
index 0861a09..64c7a27 100644
--- a/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/CLIBootstrap.java
+++ b/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/CLIBootstrap.java
@@ -85,12 +85,12 @@
 
     private JavaInfo java = new JavaInfo();
     private GlassFishInfo gfInfo = new GlassFishInfo();
-    private UserVMArgs userVMArgs = new UserVMArgs(System.getProperty(ENV_VAR_PROP_PREFIX + "VMARGS"));
+    private final UserVMArgs userVMArgs = new UserVMArgs(System.getProperty(ENV_VAR_PROP_PREFIX + "VMARGS"));
 
     /**
      * Set up with various sub-types of command line elements
      */
-    private CommandLineElement
+    private final CommandLineElement
         /** options to the ACC that take a value */
         accValuedOptions = new ACCValuedOption("-mainclass|-name|-xml|-configxml|-user|-password|-passwordfile|-targetserver"),
 
@@ -106,7 +106,7 @@
     private final JVMMainOption jvmMainSetting = new JVMMainOption();
 
     /** command line elements from most specific to least specific matching pattern */
-    private CommandLineElement[] elementsInScanOrder = new CommandLineElement[] {
+    private final CommandLineElement[] elementsInScanOrder = new CommandLineElement[] {
             accValuedOptions,   // collects options into "agentArgs"
             accUnvaluedOptions, // collects options into "agentArgs"
             jvmValuedOptions,
@@ -119,7 +119,7 @@
      * Command line elements in the order they should appear on the generated command line
      * Add the elements in this order so they appear in the generated java command in the correct positions.
      */
-    private CommandLineElement[] elementsInOutputOrder = new CommandLineElement[] {
+    private final CommandLineElement[] elementsInOutputOrder = new CommandLineElement[] {
             jvmValuedOptions,
             jvmPropertySettings,
             otherJVMOptions,
@@ -287,7 +287,6 @@
      */
     private void addProperties(final StringBuilder command) {
         command.append(' ').append("-Dorg.glassfish.gmbal.no.multipleUpperBoundsException=true");
-        command.append(' ').append("-Dorg.glassfish.gmbal.no.multipleUpperBoundsException=true");
         command.append(' ').append("--add-opens=java.base/java.lang=ALL-UNNAMED");
         command.append(' ').append(INSTALL_ROOT_PROPERTY_EXPR).append(quote(gfInfo.home().getAbsolutePath()));
         command.append(' ').append(SECURITY_POLICY_PROPERTY_EXPR).append(quote(gfInfo.securityPolicy().getAbsolutePath()));
@@ -381,7 +380,7 @@
      */
     private static class AgentArgs {
         private final StringBuilder args = new StringBuilder("=mode=acscript");
-        private char sep = ',';
+        private final char sep = ',';
 
         AgentArgs() {
             final String appcPath = System.getProperty(ENV_VAR_PROP_PREFIX + "APPCPATH");
@@ -430,7 +429,7 @@
         private final Pattern whiteSpacePattern = Pattern.compile("[\\r\\n]");
 
         /** Allows multiple values; not all command line elements support this */
-        final List<String> values = new ArrayList<String>();
+        final List<String> values = new ArrayList<>();
 
         CommandLineElement(String patternString) {
             this(patternString, 0);
@@ -584,8 +583,8 @@
     private class ValuedOption extends Option {
 
         class OptionValue {
-            private String option;
-            private String value;
+            private final String option;
+            private final String value;
 
             OptionValue(String option, String value) {
                 this.option = option;
@@ -1035,7 +1034,7 @@
         private CommandLineElement evJVMValuedOptions;
         private CommandLineElement evOtherJVMOptions;
 
-        private final List<CommandLineElement> evElements = new ArrayList<CommandLineElement>();
+        private final List<CommandLineElement> evElements = new ArrayList<>();
 
         UserVMArgs(String vmargs) throws UserError {
 
diff --git a/appserver/common/container-common/src/main/java/com/sun/enterprise/container/common/impl/util/JavaEEIOUtilsImpl.java b/appserver/common/container-common/src/main/java/com/sun/enterprise/container/common/impl/util/JavaEEIOUtilsImpl.java
index a909336..d23ca31 100644
--- a/appserver/common/container-common/src/main/java/com/sun/enterprise/container/common/impl/util/JavaEEIOUtilsImpl.java
+++ b/appserver/common/container-common/src/main/java/com/sun/enterprise/container/common/impl/util/JavaEEIOUtilsImpl.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2012, 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
@@ -16,23 +17,28 @@
 
 package com.sun.enterprise.container.common.impl.util;
 
-import org.jvnet.hk2.annotations.Contract;
-import jakarta.inject.Inject;
-import org.jvnet.hk2.annotations.Service;
-import org.glassfish.hk2.api.PostConstruct;
-import org.glassfish.hk2.api.ServiceLocator;
-
-import com.sun.enterprise.container.common.spi.util.GlassFishOutputStreamHandler;
 import com.sun.enterprise.container.common.spi.util.GlassFishInputStreamHandler;
+import com.sun.enterprise.container.common.spi.util.GlassFishOutputStreamHandler;
 import com.sun.enterprise.container.common.spi.util.JavaEEIOUtils;
 import com.sun.logging.LogDomains;
 
-import java.io.*;
+import jakarta.inject.Inject;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.OutputStream;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import org.glassfish.hk2.api.ServiceLocator;
+import org.jvnet.hk2.annotations.Service;
+
 /**
  * A contract that defines a set of methods to serialize / deserialze Java EE
  * objects (even if they are not directly serializable).
@@ -53,20 +59,23 @@
     @Inject
     ServiceLocator habitat;
 
-    private Collection<GlassFishOutputStreamHandler> outputHandlers = new HashSet<GlassFishOutputStreamHandler>();
+    private final Collection<GlassFishOutputStreamHandler> outputHandlers = new HashSet<>();
 
-    private Collection<GlassFishInputStreamHandler> inputHandlers = new HashSet<GlassFishInputStreamHandler>();
+    private final Collection<GlassFishInputStreamHandler> inputHandlers = new HashSet<>();
 
+    @Override
     public ObjectInputStream createObjectInputStream(InputStream is,
             boolean resolveObject, ClassLoader loader) throws Exception {
         return new GlassFishObjectInputStream(inputHandlers, is, loader, resolveObject);
     }
 
+    @Override
     public ObjectOutputStream createObjectOutputStream(OutputStream os,
             boolean replaceObject) throws IOException {
         return new GlassFishObjectOutputStream(outputHandlers, os, replaceObject);
     }
 
+    @Override
     public byte[] serializeObject(Object obj, boolean replaceObject)
             throws java.io.IOException {
 
@@ -101,6 +110,7 @@
         return data;
     }
 
+    @Override
     public Object deserializeObject(byte[] data, boolean resolveObject,
             ClassLoader appClassLoader) throws Exception {
 
@@ -129,20 +139,24 @@
         return obj;
     }
 
+    @Override
     public void addGlassFishOutputStreamHandler(GlassFishOutputStreamHandler handler) {
         outputHandlers.add(handler);
 
     }
 
+    @Override
     public void removeGlassFishOutputStreamHandler(GlassFishOutputStreamHandler handler) {
         outputHandlers.remove(handler);
     }
 
+    @Override
     public void addGlassFishInputStreamHandler(
             GlassFishInputStreamHandler handler) {
         inputHandlers.add(handler);
     }
 
+    @Override
     public void removeGlassFishInputStreamHandler(
             GlassFishInputStreamHandler handler) {
         inputHandlers.remove(handler);
diff --git a/appserver/core/api-exporter-fragment/pom.xml b/appserver/core/api-exporter-fragment/pom.xml
index 539927b..f98736c 100755
--- a/appserver/core/api-exporter-fragment/pom.xml
+++ b/appserver/core/api-exporter-fragment/pom.xml
@@ -223,8 +223,6 @@
                                 javax.lang.model.type;
                                 javax.lang.model.util;
                                 javax.management;
-                                javax.management.j2ee;
-                                javax.management.j2ee.statistics;
                                 javax.management.loading;
                                 javax.management.modelmbean;
                                 javax.management.monitor;
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/appserv/ejb/.gitkeep_empty_dir b/appserver/ejb/ejb-container/src/main/java/com/sun/appserv/ejb/.gitkeep_empty_dir
deleted file mode 100644
index e69de29..0000000
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/appserv/ejb/.gitkeep_empty_dir
+++ /dev/null
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/EJBUtils.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/EJBUtils.java
index 9a46d90..df490db 100644
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/EJBUtils.java
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/EJBUtils.java
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2021 Contributors to the Eclipse Foundation
+ * Copyright (c) 2021-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
@@ -18,9 +18,9 @@
 package com.sun.ejb;
 
 import com.sun.ejb.codegen.AsmSerializableBeanGenerator;
-import com.sun.ejb.codegen.ClassGeneratorFactory;
+import com.sun.ejb.codegen.EjbClassGeneratorFactory;
 import com.sun.ejb.codegen.Generator;
-import com.sun.ejb.codegen.GenericHomeGenerator;
+import com.sun.ejb.codegen.GeneratorException;
 import com.sun.ejb.codegen.Remote30WrapperGenerator;
 import com.sun.ejb.codegen.RemoteGenerator;
 import com.sun.ejb.containers.BaseContainer;
@@ -31,35 +31,24 @@
 import com.sun.enterprise.deployment.EjbReferenceDescriptor;
 import com.sun.logging.LogDomains;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
-import java.io.PrintStream;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
-import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.util.Collection;
-import java.util.Properties;
 import java.util.SortedMap;
 import java.util.TreeMap;
-import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import javax.naming.NamingException;
 import javax.rmi.PortableRemoteObject;
 
-import org.glassfish.pfl.dynamic.codegen.spi.Wrapper;
-
-import static com.sun.ejb.codegen.GenericHomeGenerator.GENERIC_HOME_CLASSNAME;
 import static java.util.logging.Level.FINE;
-import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper.DUMP_AFTER_SETUP_VISITOR;
-import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper.TRACE_BYTE_CODE_GENERATION;
-import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper.USE_ASM_VERIFIER;
 
 /**
  * A handy class with static utility methods.
@@ -331,7 +320,7 @@
     public static Object lookupRemote30BusinessObject(Object jndiObj, String businessInterface) throws NamingException {
         try {
             ClassLoader loader = Thread.currentThread().getContextClassLoader();
-            Class<?> genericEJBHome = loadGeneratedGenericEJBHomeClass(loader);
+            Class<?> genericEJBHome = loadGeneratedGenericEJBHomeClass(loader, jndiObj.getClass());
             final Object genericHomeObj = PortableRemoteObject.narrow(jndiObj, genericEJBHome);
 
             // The generated remote business interface and the
@@ -356,11 +345,16 @@
     }
 
 
-    public static Class loadGeneratedSerializableClass(ClassLoader loader, String className) throws Exception {
-        String generatedSerializableClassName = AsmSerializableBeanGenerator.getGeneratedSerializableClassName(className);
-        Class developerClass = loader.loadClass(className);
-        AsmSerializableBeanGenerator gen =
-            new AsmSerializableBeanGenerator(loader, developerClass, generatedSerializableClassName);
+    public static Class loadGeneratedSerializableClass(final ClassLoader loader, final Class<?> originalClass)
+        throws Exception {
+        final String generatedClassName = AsmSerializableBeanGenerator
+            .getGeneratedSerializableClassName(originalClass.getName());
+        try {
+            return loader.loadClass(generatedClassName);
+        } catch (ClassNotFoundException e) {
+            // Not loaded yet. Just continue
+        }
+        AsmSerializableBeanGenerator gen = new AsmSerializableBeanGenerator(loader, originalClass, generatedClassName);
         return gen.generateSerializableSubclass();
     }
 
@@ -377,117 +371,41 @@
      * @return full class name of the generated remote interface
      * @throws Exception
      */
-    public static String loadGeneratedRemoteBusinessClasses(ClassLoader appClassLoader, String businessInterfaceName)
+    public static Class<?> loadGeneratedRemoteBusinessClasses(ClassLoader appClassLoader, String businessInterfaceName)
         throws Exception {
-        String generatedRemoteIntfName = RemoteGenerator.getGeneratedRemoteIntfName(businessInterfaceName);
-        String wrapperClassName = Remote30WrapperGenerator.getGeneratedRemoteWrapperName(businessInterfaceName);
-        Class<?> generatedRemoteIntf = loadClassIgnoringExceptions(appClassLoader, generatedRemoteIntfName);
-        Class<?> generatedRemoteWrapper = loadClassIgnoringExceptions(appClassLoader, wrapperClassName);
-        if (generatedRemoteIntf != null && generatedRemoteWrapper != null) {
-            return generatedRemoteIntfName;
-        }
-
-        Wrapper._setClassLoader(appClassLoader);
-        try {
-            if (generatedRemoteIntf == null) {
-                RemoteGenerator generator = new RemoteGenerator(appClassLoader, businessInterfaceName);
-                generateAndLoad(generator, appClassLoader);
-            }
-            if (generatedRemoteWrapper == null) {
-                Remote30WrapperGenerator generator
-                    = new Remote30WrapperGenerator(appClassLoader, businessInterfaceName, generatedRemoteIntfName);
-                generateAndLoad(generator, appClassLoader);
-            }
-        } finally {
-            // Make sure no classloader is bound to threadlocal: avoid possible classloader leak.
-            Wrapper._setClassLoader(null) ;
-        }
-        return generatedRemoteIntfName;
-    }
-
-
-    public static Class<?> loadGeneratedGenericEJBHomeClass(final ClassLoader appClassLoader) throws Exception {
-        final Class<?> generatedGenericEJBHomeClass = loadClassIgnoringExceptions(appClassLoader, GENERIC_HOME_CLASSNAME);
-        if (generatedGenericEJBHomeClass != null) {
-            return generatedGenericEJBHomeClass;
-        }
-        final GenericHomeGenerator generator = new GenericHomeGenerator();
-        return generateAndLoad(generator, appClassLoader);
-    }
-
-
-    public static Class<?> generateSEI(ClassGeneratorFactory cgf, ClassLoader loader) {
-        Class<?> clazz = loadClassIgnoringExceptions(loader, cgf.getGeneratedClassName());
-        if (clazz != null) {
-            return clazz;
-        }
-        return generateAndLoad(cgf, loader);
-    }
-
-
-    /**
-     * Checks if the class wasn't already generated by another thread and if not, generates it.
-     * The class name is retrieved from {@link ClassGeneratorFactory#getGeneratedClassName()}
-     * and if it wasn't found, generator knows it's definition.
-     */
-    // made package visible just for tests
-    static synchronized Class<?> generateAndLoad(final ClassGeneratorFactory generator, final ClassLoader loader) {
-        Class<?> clazz = loadClassIgnoringExceptions(loader, generator.getGeneratedClassName());
-        if (clazz != null) {
-            return clazz;
-        }
-
-        generator.evaluate();
-
-        final Properties props = new Properties();
-        if (_logger.isLoggable(Level.FINEST)) {
-            props.put(DUMP_AFTER_SETUP_VISITOR, "true");
-            props.put(TRACE_BYTE_CODE_GENERATION, "true");
-            props.put(USE_ASM_VERIFIER, "true");
-            try {
-                ByteArrayOutputStream baos = new ByteArrayOutputStream();
-                PrintStream ps = new PrintStream(baos);
-                Wrapper._sourceCode(ps, props);
-                _logger.fine(baos.toString());
-            } catch (Exception e) {
-                _logger.log(Level.SEVERE, "Exception generating src for logs", e);
-            }
-        }
-
-        if (System.getSecurityManager() == null) {
-            return Wrapper._generate(loader, generator.getAnchorClass().getProtectionDomain(), props);
-        }
-        PrivilegedAction<Class<?>> action = () ->
-            Wrapper._generate(loader, generator.getAnchorClass().getProtectionDomain(), props);
-        return AccessController.doPrivileged(action);
-    }
-
-    private static Class<?> loadClassIgnoringExceptions(ClassLoader classLoader, String className) {
-        try {
-            return classLoader.loadClass(className);
-        } catch (ClassNotFoundException e) {
-            _logger.log(FINE, "Could not load class: " + className + " by classloader " + classLoader, e);
-            return null;
+        try (EjbClassGeneratorFactory factory = new EjbClassGeneratorFactory(appClassLoader)) {
+            return factory.ensureRemote(businessInterfaceName);
         }
     }
 
-    public static RemoteBusinessWrapperBase createRemoteBusinessObject
-        (String businessInterface, java.rmi.Remote delegate)
-        throws Exception {
 
-        ClassLoader appClassLoader =
-            getBusinessIntfClassLoader(businessInterface);
-
-        return createRemoteBusinessObject(appClassLoader,
-                                          businessInterface, delegate);
+    public static Class<?> loadGeneratedGenericEJBHomeClass(ClassLoader appClassLoader, Class<?> anchorClass) throws GeneratorException {
+        try (EjbClassGeneratorFactory factory = new EjbClassGeneratorFactory(appClassLoader)) {
+            return factory.ensureGenericHome(anchorClass);
+        }
     }
 
 
-    public static RemoteBusinessWrapperBase createRemoteBusinessObject(ClassLoader loader, String businessInterface,
+    public static Class<?> generateSEI(ClassLoader loader, final Class<?> ejbClass) throws GeneratorException {
+        try (EjbClassGeneratorFactory factory = new EjbClassGeneratorFactory(loader)) {
+            return factory.ensureServiceInterface(ejbClass);
+        }
+    }
+
+
+    public static RemoteBusinessWrapperBase createRemoteBusinessObject(
+        String businessInterface,
         java.rmi.Remote delegate) throws Exception {
+        ClassLoader appClassLoader = getBusinessIntfClassLoader(businessInterface);
+        return createRemoteBusinessObject(appClassLoader, businessInterface, delegate);
+    }
+
+
+    public static RemoteBusinessWrapperBase createRemoteBusinessObject(
+        ClassLoader loader, String businessInterface, java.rmi.Remote delegate) throws Exception {
         String wrapperClassName = Remote30WrapperGenerator.getGeneratedRemoteWrapperName(businessInterface);
         Class clientWrapperClass = loader.loadClass(wrapperClassName);
-        Constructor ctors[] = clientWrapperClass.getConstructors();
+        Constructor[] ctors = clientWrapperClass.getConstructors();
         Constructor ctor = null;
         for (Constructor next : ctors) {
             if (next.getParameterTypes().length > 0) {
@@ -503,70 +421,43 @@
     }
 
 
-    private static ClassLoader getBusinessIntfClassLoader
-        (String businessInterface) throws Exception {
-
-        ClassLoader contextLoader = null;
-        if(System.getSecurityManager() == null) {
+    private static ClassLoader getBusinessIntfClassLoader(String businessInterface) throws Exception {
+        final ClassLoader contextLoader;
+        if (System.getSecurityManager() == null) {
             ClassLoader cl = Thread.currentThread().getContextClassLoader();
-            contextLoader = (cl != null) ? cl :
-                ClassLoader.getSystemClassLoader();
+            contextLoader = cl == null ? ClassLoader.getSystemClassLoader() : cl;
         } else {
-            contextLoader = (ClassLoader)
-            java.security.AccessController.doPrivileged
-                    (new java.security.PrivilegedAction() {
-                @Override
-                public java.lang.Object run() {
-                    // Return context class loader.  If there is none,
-                    // which could happen within Appclient container,
-                    // return system class loader.
-                    ClassLoader cl =
-                            Thread.currentThread().getContextClassLoader();
-                    return (cl != null) ? cl :
-                        ClassLoader.getSystemClassLoader();
-
-                }});
+            PrivilegedAction<ClassLoader> action = () -> {
+                ClassLoader cl = Thread.currentThread().getContextClassLoader();
+                return cl == null ? ClassLoader.getSystemClassLoader() : cl;
+            };
+            contextLoader = java.security.AccessController.doPrivileged(action);
         }
 
-        final Class businessInterfaceClass =
-            contextLoader.loadClass(businessInterface);
-
-        ClassLoader appClassLoader = null;
-        if(System.getSecurityManager() == null) {
-            appClassLoader = businessInterfaceClass.getClassLoader();
-        } else {
-            appClassLoader = (ClassLoader)
-            java.security.AccessController.doPrivileged
-                    (new java.security.PrivilegedAction() {
-                @Override
-                public java.lang.Object run() {
-                    return businessInterfaceClass.getClassLoader();
-
-                }});
+        final Class<?> businessInterfaceClass = contextLoader.loadClass(businessInterface);
+        if (System.getSecurityManager() == null) {
+            return businessInterfaceClass.getClassLoader();
         }
-
-        return appClassLoader;
+        PrivilegedAction<ClassLoader> action = () -> businessInterfaceClass.getClassLoader();
+        return java.security.AccessController.doPrivileged(action);
     }
 
-    public static void serializeObjectFields(
-                                             Object instance,
-                                             ObjectOutputStream oos)
-        throws IOException {
 
+    // warning: accessed by reflection (AsmSerializableBeanGenerator)
+    public static void serializeObjectFields(Object instance, ObjectOutputStream oos) throws IOException {
         serializeObjectFields(instance, oos, true);
     }
 
-    public static void serializeObjectFields(
-                                             Object instance,
-                                             ObjectOutputStream oos,
-                                             boolean usesSuperClass)
+
+    // warning: accessed by reflection (AsmSerializableBeanGenerator)
+    public static void serializeObjectFields(Object instance, ObjectOutputStream oos, boolean usesSuperClass)
         throws IOException {
 
         Class clazz = (usesSuperClass)? instance.getClass().getSuperclass() : instance.getClass();
         final ObjectOutputStream objOutStream = oos;
 
         // Write out list of fields eligible for serialization in sorted order.
-        for(Field next : getSerializationFields(clazz)) {
+        for (Field next : getSerializationFields(clazz)) {
 
             final Field nextField = next;
             final Object theInstance = instance;
@@ -594,39 +485,26 @@
                 }
 
                 objOutStream.writeObject(value);
-            } catch(Throwable t) {
-                if( _logger.isLoggable(FINE) ) {
-                    _logger.log(FINE, "=====> failed serializing field: " + nextField +
-                             " =====> of class: " + clazz + " =====> using: " + oos.getClass() +
-                             " =====> serializing value of type: " + ((value == null)? null : value.getClass().getName()) +
-                             " ===> Error: " + t);
-                    _logger.log(FINE, "", t);
+            } catch (Throwable t) {
+                if (_logger.isLoggable(FINE)) {
+                    _logger.log(FINE,
+                        "Failed serializing field: " + nextField + " of " + clazz
+                            + " using: " + oos.getClass() + " serializing value of type: "
+                            + (value == null ? null : value.getClass().getName()) + ", cause: " + t);
                 }
-                IOException ioe = new IOException();
-                Throwable cause = (t instanceof InvocationTargetException) ?
-                    ((InvocationTargetException)t).getCause() : t;
-                ioe.initCause( cause );
-                throw ioe;
+                throw new IOException(t instanceof InvocationTargetException ? t.getCause() : t);
             }
         }
     }
 
-    public static void deserializeObjectFields(
-                                               Object instance,
-                                               ObjectInputStream ois)
-        throws IOException {
-
+    // note: accessed by reflection!
+    public static void deserializeObjectFields(Object instance, ObjectInputStream ois) throws IOException {
         deserializeObjectFields(instance, ois, null, true);
-
     }
 
-    public static void deserializeObjectFields(
-                                               Object instance,
-                                               ObjectInputStream ois,
-                                               Object replaceValue,
-                                               boolean usesSuperClass)
-        throws IOException {
-
+    // note: accessed by reflection!
+    public static void deserializeObjectFields(Object instance, ObjectInputStream ois, Object replaceValue,
+        boolean usesSuperClass) throws IOException {
         Class clazz = (usesSuperClass)? instance.getClass().getSuperclass() : instance.getClass();
         if( _logger.isLoggable(FINE) ) {
             _logger.log(FINE, "=====> Deserializing class: " + clazz);
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/base/io/EJBObjectOutputStreamHandler.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/base/io/EJBObjectOutputStreamHandler.java
index 44c4f02..4d27c32 100644
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/base/io/EJBObjectOutputStreamHandler.java
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/base/io/EJBObjectOutputStreamHandler.java
@@ -32,12 +32,16 @@
 import javax.naming.NamingException;
 import java.io.IOException;
 import java.io.Serializable;
+import java.rmi.Remote;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import org.glassfish.enterprise.iiop.api.ProtocolManager;
 import org.glassfish.enterprise.iiop.api.GlassFishORBHelper;
 import org.glassfish.internal.api.Globals;
+
+import static com.sun.logging.LogDomains.EJB_LOGGER;
+
 import org.glassfish.api.naming.GlassfishNamingManager;
 
 import com.sun.enterprise.container.common.spi.util.GlassFishOutputStreamHandler;
@@ -48,21 +52,19 @@
  *
  * @author Mahesh Kannan
  */
-public class EJBObjectOutputStreamHandler
-    implements GlassFishOutputStreamHandler
-{
+public class EJBObjectOutputStreamHandler implements GlassFishOutputStreamHandler {
+
     static JavaEEIOUtils _javaEEIOUtils;
 
-    protected static final Logger _ejbLogger =
-            LogDomains.getLogger(EJBObjectOutputStreamHandler.class, LogDomains.EJB_LOGGER);
+    private static final Logger LOG = LogDomains.getLogger(EJBObjectOutputStreamHandler.class, EJB_LOGGER);
 
     static final int EJBID_OFFSET = 0;
     static final int INSTANCEKEYLEN_OFFSET = 8;
     static final int INSTANCEKEY_OFFSET = 12;
 
-    private static final byte HOME_KEY = (byte)0xff;
+    private static final byte HOME_KEY = (byte) 0xff;
 
-    //Ugly,
+    // FIXME: @JavaEEIOUtils is a Service, but this is really a bad thing!
     public static final void setJavaEEIOUtils(JavaEEIOUtils javaEEIOUtils) {
         _javaEEIOUtils = javaEEIOUtils;
     }
@@ -72,24 +74,21 @@
      * can be part of a bean's state. See EJB2.0 section 7.4.1.
      */
     @Override
-    public Object replaceObject(Object obj)
-            throws IOException {
+    public Object replaceObject(Object obj) throws IOException {
         Object result = obj;
 
         // Until we've identified a remote object, we can't assume the orb is
-        // available in the container.  If the orb is not present, this will be null.
+        // available in the container. If the orb is not present, this will be null.
         ProtocolManager protocolMgr = getProtocolManager();
 
         if (obj instanceof RemoteBusinessWrapperBase) {
-            result = getRemoteBusinessObjectFactory
-                    ((RemoteBusinessWrapperBase) obj);
+            result = getRemoteBusinessObjectFactory((RemoteBusinessWrapperBase) obj);
         } else if ((protocolMgr != null) && protocolMgr.isStub(obj) && protocolMgr.isLocal(obj)) {
             org.omg.CORBA.Object target = (org.omg.CORBA.Object) obj;
             // If we're here, it's always for the 2.x RemoteHome view.
             // There is no remote business wrapper class.
             result = getSerializableEJBReference(target, protocolMgr, null);
         }
-
         return result;
     }
 
@@ -104,75 +103,47 @@
         return orbHelper.isORBInitialized() ? orbHelper.getProtocolManager() : null;
     }
 
-    private Serializable getRemoteBusinessObjectFactory
-        (RemoteBusinessWrapperBase remoteBusinessWrapper)
+
+    private Serializable getRemoteBusinessObjectFactory(RemoteBusinessWrapperBase remoteBusinessWrapper)
         throws IOException {
         // Create a serializable object with the remote delegate and
         // the name of the client wrapper class.
-        org.omg.CORBA.Object target = (org.omg.CORBA.Object)
-            remoteBusinessWrapper.getStub();
-        return getSerializableEJBReference(target,
-                       getProtocolManager(),
-                      remoteBusinessWrapper.getBusinessInterfaceName());
+        org.omg.CORBA.Object target = (org.omg.CORBA.Object) remoteBusinessWrapper.getStub();
+        return getSerializableEJBReference(target, getProtocolManager(), remoteBusinessWrapper.getBusinessInterfaceName());
     }
 
-    private Serializable getSerializableEJBReference(org.omg.CORBA.Object obj,
-                             ProtocolManager protocolMgr,
-                             String remoteBusinessInterface)
-    throws IOException
-    {
-        Serializable result = (Serializable) obj;
+
+    private Serializable getSerializableEJBReference(
+        org.omg.CORBA.Object obj, ProtocolManager protocolMgr, String remoteBusinessInterface) throws IOException {
         try {
-
-
             byte[] oid = protocolMgr.getObjectID(obj);
-
-
-            if ((oid != null) && (oid.length > INSTANCEKEY_OFFSET)) {
+            if (oid != null && oid.length > INSTANCEKEY_OFFSET) {
                 long containerId = Utility.bytesToLong(oid, EJBID_OFFSET);
-                //To be really sure that is indeed a ref generated
+                // To be really sure that is indeed a ref generated
                 //  by our container we do the following checks
                 int keyLength = Utility.bytesToInt(oid, INSTANCEKEYLEN_OFFSET);
                 if (oid.length == keyLength + INSTANCEKEY_OFFSET) {
-                    boolean isHomeReference =
-                        ((keyLength == 1) && (oid[INSTANCEKEY_OFFSET] == HOME_KEY));
+                    boolean isHomeReference = keyLength == 1 && oid[INSTANCEKEY_OFFSET] == HOME_KEY;
                     if (isHomeReference) {
-                        result = new SerializableS1ASEJBHomeReference(containerId);
-                    } else {
-                        SerializableS1ASEJBObjectReference serRef =
-                            new SerializableS1ASEJBObjectReference(containerId,
-                            oid, keyLength, remoteBusinessInterface);
-                        result = serRef;
-                        /* TODO
-                        if (serRef.isHAEnabled()) {
-                            SimpleKeyGenerator gen = new SimpleKeyGenerator();
-                            Object key = gen.byteArrayToKey(oid, INSTANCEKEY_OFFSET, 20);
-                            long version = SFSBClientVersionManager.getClientVersion(
-                                    containerId, key);
-                            serRef.setSFSBClientVersion(key, version);
-                        } */
+                        return new SerializableS1ASEJBHomeReference(containerId);
                     }
+                    return new SerializableS1ASEJBObjectReference(containerId, oid, keyLength, remoteBusinessInterface);
                 }
             }
+            return (Serializable) obj;
         } catch (Exception ex) {
-            _ejbLogger.log(Level.WARNING, "Exception while getting serializable object", ex);
-            IOException ioEx = new IOException("Exception during extraction of instance key");
-            ioEx.initCause(ex);
-            throw ioEx;
+            LOG.log(Level.WARNING, "Exception while getting serializable object", ex);
+            throw new IOException("Exception during extraction of instance key", ex);
         }
-        return result;
     }
-
 }
 
-final class SerializableJNDIContext
-    implements SerializableObjectFactory
-{
+
+final class SerializableJNDIContext implements SerializableObjectFactory {
+
     private String name;
 
-    SerializableJNDIContext(Context ctx)
-        throws IOException
-    {
+    SerializableJNDIContext(Context ctx) throws IOException {
         try {
             // Serialize state for a jndi context.  The spec only requires
             // support for serializing contexts pointing to java:comp/env
@@ -183,127 +154,92 @@
             // throw an exception during deserialization.
             this.name = ctx.getNameInNamespace();
         } catch (NamingException ex) {
-            IOException ioe = new IOException();
-            ioe.initCause(ex);
-            throw ioe;
+            throw new IOException(ex);
         }
     }
 
+
     @Override
-    public Object createObject()
-        throws IOException
-    {
+    public Object createObject() throws IOException {
         try {
-            if ((name == null) || (name.length() == 0)) {
+            if (name == null || name.isEmpty()) {
                 return new InitialContext();
-            } else {
-                return Globals.getDefaultHabitat().<GlassfishNamingManager>getService(GlassfishNamingManager.class).restoreJavaCompEnvContext(name);
             }
-        } catch (NamingException namEx) {
-            IOException ioe = new IOException();
-            ioe.initCause(namEx);
-            throw ioe;
-    }
+            return Globals.getDefaultHabitat().<GlassfishNamingManager> getService(GlassfishNamingManager.class)
+                .restoreJavaCompEnvContext(name);
+        } catch (NamingException e) {
+            throw new IOException(e);
+        }
     }
 
 }
 
-abstract class AbstractSerializableS1ASEJBReference
-    implements SerializableObjectFactory
-{
+
+abstract class AbstractSerializableS1ASEJBReference implements SerializableObjectFactory {
+
+    protected static final Logger LOG = LogDomains.getLogger(AbstractSerializableS1ASEJBReference.class, EJB_LOGGER);
     protected long containerId;
-    protected String debugStr;    //used for loggin purpose only
 
 
-    protected static Logger _ejbLogger =
-       LogDomains.getLogger(AbstractSerializableS1ASEJBReference.class, LogDomains.EJB_LOGGER);
-
     AbstractSerializableS1ASEJBReference(long containerId) {
-    this.containerId = containerId;
-    BaseContainer container = EjbContainerUtilImpl.getInstance().getContainer(containerId);
-
-    //container can be null if the app has been undeployed
-    //  after this was serialized
-    if (container == null) {
-        _ejbLogger.log(Level.WARNING, "ejb.base.io.EJBOutputStream.null_container: "
-        + containerId);
-        debugStr = "" + containerId;
-    } else {
-        debugStr = container.toString();
-    }
-    }
-
-
-    protected static java.rmi.Remote doRemoteRefClassLoaderConversion
-        (java.rmi.Remote reference) throws IOException {
-
-        Thread currentThread = Thread.currentThread();
-        ClassLoader contextClassLoader =
-            currentThread.getContextClassLoader();
-
-        java.rmi.Remote returnReference = reference;
-
-        if( reference.getClass().getClassLoader() !=
-            contextClassLoader) {
-            try {
-                byte[] serializedRef = EJBObjectOutputStreamHandler._javaEEIOUtils.serializeObject
-                    (reference, false);
-                returnReference = (java.rmi.Remote)
-                        EJBObjectOutputStreamHandler._javaEEIOUtils.deserializeObject(serializedRef, false,
-                                             contextClassLoader);
-                GlassFishORBHelper orbHelper = EjbContainerUtilImpl.getInstance().getORBHelper();
-                ProtocolManager protocolMgr = orbHelper.getProtocolManager();
-
-               protocolMgr.connectObject(returnReference);
-
-            } catch(IOException ioe) {
-                throw ioe;
-            } catch(Exception e) {
-                IOException ioEx = new IOException(e.getMessage());
-                ioEx.initCause(e);
-                throw ioEx;
-            }
+        this.containerId = containerId;
+        BaseContainer container = EjbContainerUtilImpl.getInstance().getContainer(containerId);
+        // container can be null if the app has been undeployed after this was serialized
+        if (container == null) {
+            LOG.log(Level.WARNING, "ejb.base.io.null_container", containerId);
         }
+    }
 
-        return returnReference;
+
+    protected static java.rmi.Remote doRemoteRefClassLoaderConversion(final java.rmi.Remote reference) throws IOException {
+        ClassLoader contextClassLoader =  Thread.currentThread().getContextClassLoader();
+        if (contextClassLoader == reference.getClass().getClassLoader()) {
+            return reference;
+        }
+        try {
+            byte[] serializedRef = EJBObjectOutputStreamHandler._javaEEIOUtils.serializeObject(reference, false);
+            Remote returnReference = (java.rmi.Remote) EJBObjectOutputStreamHandler._javaEEIOUtils
+                .deserializeObject(serializedRef, false, contextClassLoader);
+            GlassFishORBHelper orbHelper = EjbContainerUtilImpl.getInstance().getORBHelper();
+            ProtocolManager protocolMgr = orbHelper.getProtocolManager();
+            protocolMgr.connectObject(returnReference);
+            return returnReference;
+        } catch (IOException ioe) {
+            throw ioe;
+        } catch (Exception e) {
+            throw new IOException(e.getMessage(), e);
+        }
     }
 }
 
-final class SerializableS1ASEJBHomeReference
-    extends AbstractSerializableS1ASEJBReference
-{
+
+final class SerializableS1ASEJBHomeReference extends AbstractSerializableS1ASEJBReference {
+
+    private static final long serialVersionUID = 1L;
 
     SerializableS1ASEJBHomeReference(long containerId) {
-    super(containerId);
+        super(containerId);
     }
 
     @Override
-    public Object createObject()
-        throws IOException
-    {
-        Object result = null;
+    public Object createObject() throws IOException {
         BaseContainer container = EjbContainerUtilImpl.getInstance().getContainer(containerId);
         //container can be null if the app has been undeployed
         //  after this was serialized
         if (container == null) {
-            _ejbLogger.log(Level.WARNING, "ejb.base.io.EJBOutputStream.null_container "
-            + debugStr);
-            result = null;
-        } else {
-            // Note that we can assume it's a RemoteHome stub because an
-            // application never sees a reference to the internal
-            // Home for the Remote Business view.
-            result = AbstractSerializableS1ASEJBReference.
-                doRemoteRefClassLoaderConversion(container.getEJBHomeStub());
+            LOG.log(Level.WARNING, "ejb.base.io.null_container", containerId);
+            return null;
         }
-
-        return result;
+        // Note that we can assume it's a RemoteHome stub because an
+        // application never sees a reference to the internal
+        // Home for the Remote Business view.
+        return AbstractSerializableS1ASEJBReference.doRemoteRefClassLoaderConversion(container.getEJBHomeStub());
     }
 }
 
-final class SerializableS1ASEJBObjectReference
-    extends AbstractSerializableS1ASEJBReference
-{
+
+final class SerializableS1ASEJBObjectReference extends AbstractSerializableS1ASEJBReference {
+    private static final long serialVersionUID = 1L;
     private final byte[] instanceKey;
     private Object sfsbKey;
     private long sfsbClientVersion;
@@ -322,8 +258,7 @@
         }
         remoteBusinessInterface = remoteBusinessInterfaceName;
         instanceKey = new byte[keySize];
-        System.arraycopy(objKey, EJBObjectOutputStreamHandler.INSTANCEKEY_OFFSET,
-                instanceKey, 0, keySize);
+        System.arraycopy(objKey, EJBObjectOutputStreamHandler.INSTANCEKEY_OFFSET, instanceKey, 0, keySize);
     }
 
     void setSFSBClientVersion(Object key, long val) {
@@ -336,63 +271,30 @@
     }
 
     @Override
-    public Object createObject()
-        throws IOException
-    {
-        Object result = null;
+    public Object createObject() throws IOException {
         BaseContainer container = EjbContainerUtilImpl.getInstance().getContainer(containerId);
-        //container can be null if the app has been undeployed
-        //  after this was serialized
+        //container can be null if the app has been undeployed after this was serialized
         if (container == null) {
-            _ejbLogger.log(Level.WARNING,
-                               "ejb.base.io.EJBOutputStream.null_container: "
-                               + debugStr);
-            result = null;
-        } else {
-                try {
-                    if( remoteBusinessInterface == null ) {
-                        java.rmi.Remote reference = container.
-                            createRemoteReferenceWithId(instanceKey, null);
-                        result = AbstractSerializableS1ASEJBReference.
-                            doRemoteRefClassLoaderConversion(reference);
-
-                    } else {
-
-                        String generatedRemoteIntfName = RemoteGenerator.
-                            getGeneratedRemoteIntfName(remoteBusinessInterface);
-
-                        java.rmi.Remote remoteRef = container.
-                            createRemoteReferenceWithId(instanceKey,
-                                                        generatedRemoteIntfName);
-
-                        java.rmi.Remote newRemoteRef =
-                            AbstractSerializableS1ASEJBReference.
-                                doRemoteRefClassLoaderConversion(remoteRef);
-
-
-                        Thread currentThread = Thread.currentThread();
-                        ClassLoader contextClassLoader =
-                            currentThread.getContextClassLoader();
-
-                        result = EJBUtils.createRemoteBusinessObject
-                            (contextClassLoader, remoteBusinessInterface,
-                             newRemoteRef);
-
-                    }
-                    /*TODO
-                    if (haEnabled) {
-                        SFSBClientVersionManager.setClientVersion(
-                                containerId, sfsbKey, sfsbClientVersion);
-                    }*/
-                } catch(Exception e) {
-                    IOException ioex = new IOException("remote ref create error");
-                    ioex.initCause(e);
-                    throw ioex;
-                }
+            LOG.log(Level.WARNING, "ejb.base.io.null_container", containerId);
+            return null;
         }
+        try {
+            if (remoteBusinessInterface == null) {
+                java.rmi.Remote reference = container.createRemoteReferenceWithId(instanceKey, null);
+                return AbstractSerializableS1ASEJBReference.doRemoteRefClassLoaderConversion(reference);
+            }
+            String generatedRemoteIntfName = RemoteGenerator.getGeneratedRemoteIntfName(remoteBusinessInterface);
+            java.rmi.Remote remoteRef = container.createRemoteReferenceWithId(instanceKey, generatedRemoteIntfName);
+            java.rmi.Remote newRemoteRef = AbstractSerializableS1ASEJBReference
+                .doRemoteRefClassLoaderConversion(remoteRef);
 
-        return result;
+            ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+            return EJBUtils.createRemoteBusinessObject(contextClassLoader, remoteBusinessInterface, newRemoteRef);
+        } catch (Exception e) {
+            IOException ioex = new IOException("remote ref create error");
+            ioex.initCause(e);
+            throw ioex;
+        }
     }
 }
 
-
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/AsmSerializableBeanGenerator.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/AsmSerializableBeanGenerator.java
index ca099bb..a184973 100644
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/AsmSerializableBeanGenerator.java
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/AsmSerializableBeanGenerator.java
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2021 Contributors to the Eclipse Foundation
+ * Copyright (c) 2021-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
@@ -19,28 +19,27 @@
 
 import java.io.Serializable;
 import java.lang.reflect.Constructor;
-import java.lang.reflect.ReflectPermission;
 import java.security.AccessController;
-import java.security.Permission;
 import java.security.PrivilegedAction;
-import java.security.ProtectionDomain;
-
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.ClassWriter;
 import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.Type;
 
-public class AsmSerializableBeanGenerator implements Opcodes {
+import static org.objectweb.asm.Opcodes.ACC_PRIVATE;
+import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
+import static org.objectweb.asm.Opcodes.ALOAD;
+import static org.objectweb.asm.Opcodes.INVOKESPECIAL;
+import static org.objectweb.asm.Opcodes.INVOKESTATIC;
+import static org.objectweb.asm.Opcodes.RETURN;
+import static org.objectweb.asm.Opcodes.V11;
+
+public class AsmSerializableBeanGenerator {
 
     private static final int INTF_FLAGS = ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES;
 
-    private byte[] classData;
-    private Class loadedClass;
     private final ClassLoader loader;
-
-    private final Class baseClass;
-
+    private final Class<?> baseClass;
     private final String subclassName;
 
 
@@ -60,23 +59,15 @@
     public AsmSerializableBeanGenerator(ClassLoader loader, Class baseClass, String serializableSubclassName) {
         this.loader = loader;
         this.baseClass = baseClass;
-        subclassName = serializableSubclassName;
+        this.subclassName = serializableSubclassName;
     }
 
     public String getSerializableSubclassName() {
         return subclassName;
     }
 
-    public Class generateSerializableSubclass()
-        throws Exception {
 
-        try {
-            loadedClass = loader.loadClass(subclassName);
-            return loadedClass;
-        } catch(ClassNotFoundException e) {
-            // Not loaded yet.  Just continue
-        }
-
+    public Class generateSerializableSubclass() throws Exception {
         ClassWriter cw = new ClassWriter(INTF_FLAGS);
 
         //ClassVisitor tv = //(_debug)
@@ -88,7 +79,7 @@
             Type.getType(Serializable.class).getInternalName()
         };
 
-        tv.visit(V1_1, ACC_PUBLIC,
+        tv.visit(V11, ACC_PUBLIC,
             subclassInternalName, null,
             Type.getType(baseClass).getInternalName(), interfaces);
 
@@ -97,9 +88,9 @@
         // JSR 299 added requirements that allow a single constructor to define
         // parameters injected by CDI.
 
-        Constructor[] ctors = baseClass.getConstructors();
-        Constructor ctorWithParams = null;
-        for(Constructor ctor : ctors) {
+        Constructor<?>[] ctors = baseClass.getConstructors();
+        Constructor<?> ctorWithParams = null;
+        for(Constructor<?> ctor : ctors) {
             if(ctor.getParameterTypes().length == 0) {
                 ctorWithParams = null;    //exists the no-arg ctor, use it
                 break;
@@ -111,27 +102,25 @@
         int numArgsToPass = 1; // default is 1 to just handle 'this'
         String paramTypeString = "()V";
 
-        if( ctorWithParams != null ) {
-            Class[] paramTypes = ctorWithParams.getParameterTypes();
+        if (ctorWithParams != null) {
+            Class<?>[] paramTypes = ctorWithParams.getParameterTypes();
             numArgsToPass = paramTypes.length + 1;
             paramTypeString = Type.getConstructorDescriptor(ctorWithParams);
         }
 
         MethodVisitor ctorv = tv.visitMethod(ACC_PUBLIC, "<init>", paramTypeString, null, null);
 
-        for(int i = 0; i < numArgsToPass; i++) {
+        for (int i = 0; i < numArgsToPass; i++) {
             ctorv.visitVarInsn(ALOAD, i);
         }
-
-        ctorv.visitMethodInsn(INVOKESPECIAL,  Type.getType(baseClass).getInternalName(), "<init>",
-            paramTypeString);
+        ctorv.visitMethodInsn(INVOKESPECIAL,  Type.getType(baseClass).getInternalName(), "<init>", paramTypeString, false);
         ctorv.visitInsn(RETURN);
         ctorv.visitMaxs(numArgsToPass, numArgsToPass);
 
         MethodVisitor cv = cw.visitMethod(ACC_PRIVATE, "writeObject", "(Ljava/io/ObjectOutputStream;)V", null, new String[] { "java/io/IOException" });
         cv.visitVarInsn(ALOAD, 0);
         cv.visitVarInsn(ALOAD, 1);
-        cv.visitMethodInsn(INVOKESTATIC, "com/sun/ejb/EJBUtils", "serializeObjectFields", "(Ljava/lang/Object;Ljava/io/ObjectOutputStream;)V");
+        cv.visitMethodInsn(INVOKESTATIC, "com/sun/ejb/EJBUtils", "serializeObjectFields", "(Ljava/lang/Object;Ljava/io/ObjectOutputStream;)V", false);
         cv.visitInsn(RETURN);
         cv.visitMaxs(2, 2);
 
@@ -139,60 +128,16 @@
         cv = cw.visitMethod(ACC_PRIVATE, "readObject", "(Ljava/io/ObjectInputStream;)V", null, new String[] { "java/io/IOException", "java/lang/ClassNotFoundException" });
         cv.visitVarInsn(ALOAD, 0);
         cv.visitVarInsn(ALOAD, 1);
-        cv.visitMethodInsn(INVOKESTATIC, "com/sun/ejb/EJBUtils", "deserializeObjectFields", "(Ljava/lang/Object;Ljava/io/ObjectInputStream;)V");
+        cv.visitMethodInsn(INVOKESTATIC, "com/sun/ejb/EJBUtils", "deserializeObjectFields", "(Ljava/lang/Object;Ljava/io/ObjectInputStream;)V", false);
         cv.visitInsn(RETURN);
         cv.visitMaxs(2, 2);
 
         tv.visitEnd();
 
-        classData = cw.toByteArray();
+        byte[] classData = cw.toByteArray();
 
-        loadedClass = (Class) java.security.AccessController.doPrivileged(
-                        new java.security.PrivilegedAction() {
-                            @Override
-                            public java.lang.Object run() {
-                                return makeClass(subclassName, classData, baseClass.getProtectionDomain(), loader);
-                            }
-                        }
-                );
-
-        return loadedClass;
-    }
-
-     // A Method for the protected ClassLoader.defineClass method, which we access
-    // using reflection.  This requires the supressAccessChecks permission.
-    private static final java.lang.reflect.Method defineClassMethod = AccessController.doPrivileged(
-        new PrivilegedAction<java.lang.reflect.Method>() {
-            @Override
-            public java.lang.reflect.Method run() {
-                try {
-                    java.lang.reflect.Method meth = ClassLoader.class.getDeclaredMethod(
-                        "defineClass", String.class,
-                        byte[].class, int.class, int.class,
-                        ProtectionDomain.class);
-                    meth.setAccessible(true);
-                    return meth;
-                } catch (Exception exc) {
-                    throw new RuntimeException(
-                        "Could not find defineClass method!", exc ) ;
-                }
-            }
-        }
-    );
-
-    private static final Permission accessControlPermission = new ReflectPermission("suppressAccessChecks");
-
-    // This requires a permission check
-    private Class<?> makeClass(String name, byte[] def, ProtectionDomain pd, ClassLoader loader) {
-        SecurityManager sman = System.getSecurityManager() ;
-        if (sman != null) {
-            sman.checkPermission( accessControlPermission ) ;
-        }
-
-        try {
-            return (Class) defineClassMethod.invoke(loader, name, def, 0, def.length, pd);
-        } catch (Exception exc) {
-            throw new RuntimeException("Could not invoke defineClass!", exc);
-        }
+        PrivilegedAction<Class<?>> action = () -> ClassGenerator.defineClass(loader, subclassName, classData,
+            baseClass.getProtectionDomain());
+        return AccessController.doPrivileged(action);
     }
 }
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/ClassGenerator.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/ClassGenerator.java
new file mode 100644
index 0000000..14289c3
--- /dev/null
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/ClassGenerator.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (c) 2022 Eclipse Foundation 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.ejb.codegen;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.security.AccessController;
+import java.security.PrivilegedExceptionAction;
+import java.security.ProtectionDomain;
+import java.util.logging.Logger;
+
+import static java.util.logging.Level.CONFIG;
+
+/**
+ * This class serves to generate classes, which cannot be generated by the
+ * {@link java.lang.invoke.MethodHandles.Lookup} class, because it restricts
+ * the generated class to use an already existing class as a source of the package
+ * and {@link ProtectionDomain}.
+ * <p>
+ * Also {@link Proxy#newProxyInstance(ClassLoader, Class[], java.lang.reflect.InvocationHandler)}
+ * has another requirements, ie. all referred classes must be loadable by used classloader.
+ *
+ * @author David Matejcek
+ */
+public final class ClassGenerator {
+
+    private static final Logger LOG = Logger.getLogger(ClassGenerator.class.getName());
+    private static Method defineClassMethod;
+    private static Method defineClassMethodSM;
+
+    static {
+        try {
+            final PrivilegedExceptionAction<Void> action = () -> {
+                final Class<?> cl = Class.forName("java.lang.ClassLoader");
+                final String name = "defineClass";
+                defineClassMethod = cl.getDeclaredMethod(name, String.class, byte[].class, int.class, int.class);
+                defineClassMethod.setAccessible(true);
+                defineClassMethodSM = cl.getDeclaredMethod(
+                    name, String.class, byte[].class, int.class, int.class, ProtectionDomain.class);
+                defineClassMethodSM.setAccessible(true);
+                return null;
+            };
+            AccessController.doPrivileged(action);
+            LOG.config("ClassLoader methods capable of generating classes were successfully detected.");
+        } catch (final Exception e) {
+            throw new Error("Could not initialize access to ClassLoader.defineClass method.", e);
+        }
+    }
+
+
+    private ClassGenerator() {
+        // hidden
+    }
+
+
+    /**
+     * Calls the {@link ClassLoader}'s protected defineClass method to create a new class
+     *
+     * @param loader the classloader instance used to generate the class
+     * @param className expected binary name or null
+     * @param classData the valid bytes that make up the class data.
+     * @return the new generated class
+     * @throws ClassDefinitionException invalid data, missing dependency, or another error related
+     *             to the class generation
+     */
+    public static Class<?> defineClass(final ClassLoader loader, final String className, final byte[] classData)
+        throws ClassDefinitionException {
+        return defineClass(loader, className, classData, 0, classData.length);
+    }
+
+
+    /**
+     * Calls the {@link ClassLoader}'s protected defineClass method to create a new class
+     *
+     * @param loader the classloader instance used to generate the class
+     * @param className expected binary name or null
+     * @param classData the valid bytes that make up the class data.
+     * @param offset The start offset in {@code b} of the class data
+     * @param length The length of the class data
+     * @return the new generated class
+     * @throws ClassDefinitionException invalid data, missing dependency, or another error related
+     *             to the class generation
+     */
+    public static Class<?> defineClass(
+        final ClassLoader loader, final String className,
+        final byte[] classData, final int offset, final int length) throws ClassDefinitionException {
+        LOG.log(CONFIG, "Defining class: {0} by loader: {1}", new Object[] {className, loader});
+        try {
+            return (Class<?>) defineClassMethod.invoke(loader, className, classData, 0, length);
+        } catch (final Exception | NoClassDefFoundError | ClassFormatError e) {
+            throw new ClassDefinitionException(className, loader, e);
+        }
+    }
+
+
+    /**
+     * Calls the {@link ClassLoader}'s protected defineClass method to create a new class
+     *
+     * @param loader the classloader instance used to generate the class
+     * @param className expected binary name or null
+     * @param classData the valid bytes that make up the class data.
+     * @param protectionDomain The {@code ProtectionDomain} of the class
+     * @return the new generated class
+     * @throws ClassDefinitionException invalid data, missing dependency, or another error related
+     *             to the class generation
+     */
+    public static Class<?> defineClass(final ClassLoader loader, final String className, final byte[] classData,
+        final ProtectionDomain protectionDomain) throws ClassDefinitionException {
+        return defineClass(loader, className, classData, 0, classData.length, protectionDomain);
+    }
+
+
+    /**
+     * Calls the {@link ClassLoader}'s protected defineClass method to create a new class
+     *
+     * @param loader the classloader instance used to generate the class
+     * @param className expected binary name or null
+     * @param classData the valid bytes that make up the class data.
+     * @param offset The start offset in {@code b} of the class data
+     * @param length The length of the class data
+     * @param protectionDomain The {@code ProtectionDomain} of the class
+     * @return the new generated class
+     * @throws ClassDefinitionException invalid data, missing dependency, or another error related
+     *             to the class generation
+     */
+    public static Class<?> defineClass(
+        final ClassLoader loader, final String className,
+        final byte[] classData, final int offset, final int length,
+        final ProtectionDomain protectionDomain) throws ClassDefinitionException {
+        LOG.log(CONFIG, "Defining class: {0} by loader: {1}", new Object[] {className, loader});
+        try {
+            return (Class<?>) defineClassMethodSM.invoke(loader, className, classData, 0, length, protectionDomain);
+        } catch (final Exception | NoClassDefFoundError | ClassFormatError e) {
+            throw new ClassDefinitionException(className, loader, e);
+        }
+    }
+
+
+    /**
+     * The class wasn't generated. See the message and cause to see what happened.
+     */
+    public static class ClassDefinitionException extends RuntimeException {
+        private static final long serialVersionUID = -8955780830818904365L;
+
+        ClassDefinitionException(final String className, final ClassLoader loader, final Throwable cause) {
+            super("Could not define class '" + className + "' by the class loader: " + loader, cause);
+        }
+    }
+}
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/ClassGeneratorFactory.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/ClassGeneratorFactory.java
deleted file mode 100644
index 84a1263..0000000
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/ClassGeneratorFactory.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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
- * 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.ejb.codegen;
-
-import org.glassfish.pfl.dynamic.codegen.spi.Wrapper;
-
-/**
- * Convenience interface that defines a factory for ClassGenerator instances.
- * It puts the class name of the generated class in a single place.
- */
-public interface ClassGeneratorFactory {
-
-    /**
-     * @return name of the generated class or interface
-     */
-    String getGeneratedClassName();
-
-    /**
-     * @return loadable class of the same package as {@link #getGeneratedClassName()}
-     */
-    Class<?> getAnchorClass();
-
-    /**
-     * Calls {@link Wrapper} methods to configure the class definition.
-     */
-    void evaluate();
-}
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/EjbClassGeneratorFactory.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/EjbClassGeneratorFactory.java
new file mode 100644
index 0000000..48123ec
--- /dev/null
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/EjbClassGeneratorFactory.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (c) 2022 Eclipse Foundation 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.ejb.codegen;
+
+import java.util.Objects;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.glassfish.pfl.dynamic.codegen.spi.Type;
+
+import static java.util.logging.Level.FINE;
+import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._clear;
+import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._setClassLoader;
+
+/**
+ * @author David Matejcek
+ */
+public class EjbClassGeneratorFactory implements AutoCloseable {
+    private static final Logger LOG = Logger.getLogger(EjbClassGeneratorFactory.class.getName());
+
+    private final ClassLoader loader;
+
+    public EjbClassGeneratorFactory(final ClassLoader loader) {
+        this.loader = loader;
+        // WARN: Calls also org.glassfish.pfl.dynamic.codegen.spi.Type.clearCaches() which
+        //       makes them inaccessible for some classloader implementations (and for
+        //       some classloaders it means they will be reloaded.
+        _setClassLoader(loader);
+    }
+
+    /**
+     * @return {@link ClassLoader} owning the generated class.
+     */
+    protected ClassLoader getClassLoader() {
+        return this.loader;
+    }
+
+
+    public Class<?> ensureGenericHome(final Class<?> anchorClass) throws GeneratorException {
+        GenericHomeGenerator generator = new GenericHomeGenerator(loader, anchorClass);
+        Class<?> clazz = loadClassIgnoringExceptions(loader, generator.getGeneratedClassName());
+        if (clazz != null) {
+            return clazz;
+        }
+        return generate(generator);
+    }
+
+
+    public Class<?> ensureServiceInterface(Class<?> ejbClass) throws GeneratorException {
+        ServiceInterfaceGenerator generator = new ServiceInterfaceGenerator(loader, ejbClass);
+        Class<?> clazz = loadClassIgnoringExceptions(loader, generator.getGeneratedClassName());
+        if (clazz != null) {
+            return clazz;
+        }
+        return generate(generator);
+    }
+
+
+    /**
+     * The generated remote business interface and the client wrapper
+     * for the business interface are produced dynamically.
+     * This call must be made before any EJB 3.0 Remote business interface
+     * runtime behavior is needed for a particular classloader.
+     */
+    public Class<?> ensureRemote(String businessInterfaceName) throws GeneratorException {
+        String generatedRemoteIntfName = RemoteGenerator.getGeneratedRemoteIntfName(businessInterfaceName);
+        String wrapperClassName = Remote30WrapperGenerator.getGeneratedRemoteWrapperName(businessInterfaceName);
+        Class<?> foundRemoteIntf = loadClassIgnoringExceptions(loader, generatedRemoteIntfName);
+        Class<?> foundRemoteWrapper = loadClassIgnoringExceptions(loader, wrapperClassName);
+        if (foundRemoteIntf != null && foundRemoteWrapper != null) {
+            return foundRemoteIntf;
+        }
+        final Class<?> remoteIntf;
+        if (foundRemoteIntf == null) {
+            RemoteGenerator generator = new RemoteGenerator(loader, businessInterfaceName);
+            remoteIntf = generate(generator);
+        } else {
+            remoteIntf = foundRemoteIntf;
+        }
+        if (foundRemoteWrapper == null) {
+            Remote30WrapperGenerator generator
+                = new Remote30WrapperGenerator(loader, businessInterfaceName, generatedRemoteIntfName);
+            generate(generator);
+        }
+        return remoteIntf;
+    }
+
+
+    private Class<?> generate(Generator generator) throws GeneratorException {
+        // if more threads use the same classloader and same classes, we don't want
+        // to allow any collisions.
+        synchronized (loader) {
+            // Other implementations don't clear after themselves, so we have to do it.
+            _clear();
+            Class<?> clazz = loadClassIgnoringExceptions(loader, generator.getGeneratedClassName());
+            if (clazz != null) {
+                return clazz;
+            }
+            final ClassLoader origClassLoader = Thread.currentThread().getContextClassLoader();
+            try {
+                Thread.currentThread().setContextClassLoader(getClassLoader());
+                final Class<?> generatedClass = generator.generate();
+                LOG.log(Level.CONFIG, "Generated class: {0} by generator: {1}",
+                    new Object[] {generatedClass, generator});
+
+                // Some classloaders don't remember generated classes (ie. ASURLClassLoader used by EJB clients)
+                // Type has an internal cache. Otherwise it would try to load the class and fail.
+                Objects.requireNonNull(Type.type(generatedClass));
+                return generatedClass;
+            } catch (IllegalAccessException | RuntimeException e) {
+                throw new GeneratorException("Generator failed: " + generator, e);
+            } finally {
+                _clear();
+                Thread.currentThread().setContextClassLoader(origClassLoader);
+            }
+        }
+    }
+
+
+    @Override
+    public void close() {
+        _setClassLoader(null);
+    }
+
+
+    private static Class<?> loadClassIgnoringExceptions(ClassLoader classLoader, String className) {
+        try {
+            return classLoader.loadClass(className);
+        } catch (ClassNotFoundException e) {
+            LOG.log(FINE, "Could not load class: " + className + " by classloader " + classLoader, e);
+            return null;
+        }
+    }
+
+
+}
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/EjbOptionalIntfGenerator.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/EjbOptionalIntfGenerator.java
index 27788be..862a30d 100644
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/EjbOptionalIntfGenerator.java
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/EjbOptionalIntfGenerator.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 1997, 2020 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
@@ -16,40 +17,58 @@
 
 package com.sun.ejb.codegen;
 
+import com.sun.ejb.spi.container.OptionalLocalInterfaceProvider;
 import com.sun.enterprise.container.common.spi.util.IndirectlySerializable;
 import com.sun.enterprise.container.common.spi.util.SerializableObjectFactory;
-import com.sun.ejb.spi.container.OptionalLocalInterfaceProvider;
-import org.objectweb.asm.*;
-import org.objectweb.asm.commons.GeneratorAdapter;
-import org.objectweb.asm.commons.Method;
+import com.sun.enterprise.deployment.util.TypeUtil;
 
+import java.io.Serializable;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
-import java.lang.reflect.ReflectPermission;
-import java.util.Map;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Set;
-import java.io.Serializable;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.security.ProtectionDomain;
-import java.security.Permission;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
 
-import com.sun.enterprise.deployment.util.TypeUtil;
+import org.objectweb.asm.ClassVisitor;
+import org.objectweb.asm.ClassWriter;
+import org.objectweb.asm.FieldVisitor;
+import org.objectweb.asm.MethodVisitor;
+import org.objectweb.asm.Type;
+import org.objectweb.asm.commons.GeneratorAdapter;
+import org.objectweb.asm.commons.Method;
 
-public class EjbOptionalIntfGenerator
-    implements Opcodes {
+import static org.objectweb.asm.Opcodes.ACC_ABSTRACT;
+import static org.objectweb.asm.Opcodes.ACC_INTERFACE;
+import static org.objectweb.asm.Opcodes.ACC_PRIVATE;
+import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
+import static org.objectweb.asm.Opcodes.ACONST_NULL;
+import static org.objectweb.asm.Opcodes.ALOAD;
+import static org.objectweb.asm.Opcodes.ARETURN;
+import static org.objectweb.asm.Opcodes.CHECKCAST;
+import static org.objectweb.asm.Opcodes.DUP;
+import static org.objectweb.asm.Opcodes.GETFIELD;
+import static org.objectweb.asm.Opcodes.INVOKEINTERFACE;
+import static org.objectweb.asm.Opcodes.INVOKESPECIAL;
+import static org.objectweb.asm.Opcodes.INVOKESTATIC;
+import static org.objectweb.asm.Opcodes.INVOKEVIRTUAL;
+import static org.objectweb.asm.Opcodes.NEW;
+import static org.objectweb.asm.Opcodes.PUTFIELD;
+import static org.objectweb.asm.Opcodes.RETURN;
+import static org.objectweb.asm.Opcodes.V11;
+
+public class EjbOptionalIntfGenerator {
 
     private static final int INTF_FLAGS = ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES;
 
     private static final String DELEGATE_FIELD_NAME = "__ejb31_delegate";
 
-    private static final Class[] emptyClassArray = new Class[] {};
+    private final Map<String, byte[]> classMap = new HashMap<>();
 
-    private Map<String, byte[]> classMap = new HashMap<String, byte[]>();
-
-    private ClassLoader loader;
+    private final ClassLoader loader;
 
     private ProtectionDomain protectionDomain;
 
@@ -57,34 +76,22 @@
         this.loader = loader;
     }
 
-    public Class loadClass(final String name)
-        throws ClassNotFoundException
-    {
-        Class clz = null;
 
+    public Class loadClass(final String name) throws ClassNotFoundException {
+        Class clz = null;
         try {
             clz = loader.loadClass(name);
-        } catch(ClassNotFoundException cnfe) {
-
-            final byte[] classData = (byte []) classMap.get(name);
-
+        } catch (ClassNotFoundException cnfe) {
+            final byte[] classData = classMap.get(name);
             if (classData != null) {
-
-                clz = (Class) java.security.AccessController.doPrivileged(
-                        new java.security.PrivilegedAction() {
-                            public java.lang.Object run() {
-                                return makeClass(name, classData, protectionDomain, loader);
-                            }
-                        }
-                );
+                PrivilegedAction<Class<?>> action = () -> ClassGenerator.defineClass(loader, name, classData,
+                    protectionDomain);
+                clz = AccessController.doPrivileged(action);
             }
         }
-
-        if( clz == null ) {
-
+        if (clz == null) {
             throw new ClassNotFoundException(name);
         }
-
         return clz;
     }
 
@@ -100,17 +107,15 @@
             interfaceNames[i] = Type.getType(interfaces[i]).getInternalName();
         }
 
-        if( protectionDomain == null ) {
+        if (protectionDomain == null) {
             protectionDomain = ejbClass.getProtectionDomain();
         }
 
         ClassWriter cw = new ClassWriter(INTF_FLAGS);
 
-//        ClassVisitor tv = (_debug)
-//                ? new TraceClassVisitor(cw, new PrintWriter(System.out)) : cw;
         ClassVisitor tv = cw;
         String intfInternalName = intfClassName.replace('.', '/');
-        tv.visit(V1_1, ACC_PUBLIC + ACC_ABSTRACT + ACC_INTERFACE,
+        tv.visit(V11, ACC_PUBLIC + ACC_ABSTRACT + ACC_INTERFACE,
                 intfInternalName, null,
                 Type.getType(Object.class).getInternalName(),
                 interfaceNames );
@@ -153,26 +158,22 @@
         return sameSignature;
     }
 
-    public void generateOptionalLocalInterfaceSubClass(Class superClass, String subClassName,
-                                                       Class delegateClass)
-        throws Exception {
 
+    public void generateOptionalLocalInterfaceSubClass(Class superClass, String subClassName, Class delegateClass)
+        throws Exception {
         generateSubclass(superClass, subClassName, delegateClass, IndirectlySerializable.class);
     }
 
+
     public void generateSubclass(Class superClass, String subClassName, Class delegateClass, Class... interfaces)
-            throws Exception {
-
-
-        if( protectionDomain == null ) {
+        throws Exception {
+        if (protectionDomain == null) {
             protectionDomain = superClass.getProtectionDomain();
         }
 
         ClassWriter cw = new ClassWriter(INTF_FLAGS);
 
-       ClassVisitor tv = cw;
-//        ClassVisitor tv = (_debug)
-//                ? new TraceClassVisitor(cw, new PrintWriter(System.out)) : cw;
+        ClassVisitor tv = cw;
 
         String[] interfaceNames = new String[interfaces.length + 1];
         interfaceNames[0] = OptionalLocalInterfaceProvider.class.getName().replace('.', '/');
@@ -180,7 +181,7 @@
             interfaceNames[i+1] = interfaces[i].getName().replace('.', '/');
         }
 
-        tv.visit(V1_1, ACC_PUBLIC, subClassName.replace('.', '/'), null,
+        tv.visit(V11, ACC_PUBLIC, subClassName.replace('.', '/'), null,
                 Type.getType(superClass).getInternalName(), interfaceNames);
 
         String fldDesc = Type.getDescriptor(delegateClass);
@@ -196,12 +197,12 @@
             Constructor[] ctors = superClass.getConstructors();
             Constructor ctorWithParams = null;
             for(Constructor ctor : ctors) {
-            if(ctor.getParameterTypes().length == 0) {
-                        ctorWithParams = null;    //exists the no-arg ctor, use it
-                        break;
-                    } else if(ctorWithParams == null) {
-                ctorWithParams = ctor;
-            }
+                if(ctor.getParameterTypes().length == 0) {
+                    ctorWithParams = null;    //exists the no-arg ctor, use it
+                    break;
+                } else if(ctorWithParams == null) {
+                    ctorWithParams = ctor;
+                }
             }
 
             MethodVisitor cv = tv.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
@@ -209,17 +210,16 @@
             String paramTypeString = "()V";
             // if void, only one param (implicit 'this' param)
             int maxValue = 1;
-            if( ctorWithParams != null ) {
-            Class[] paramTypes = ctorWithParams.getParameterTypes();
-            for(int i = 0; i < paramTypes.length; i++) {
-                cv.visitInsn(ACONST_NULL);
+            if (ctorWithParams != null) {
+                Class[] paramTypes = ctorWithParams.getParameterTypes();
+                for (Class paramType : paramTypes) {
+                    cv.visitInsn(ACONST_NULL);
+                }
+                paramTypeString = Type.getConstructorDescriptor(ctorWithParams);
+                // num params + one for 'this' pointer
+                maxValue = paramTypes.length + 1;
             }
-            paramTypeString = Type.getConstructorDescriptor(ctorWithParams);
-            // num params + one for 'this' pointer
-            maxValue = paramTypes.length + 1;
-            }
-            cv.visitMethodInsn(INVOKESPECIAL,  Type.getType(superClass).getInternalName(), "<init>",
-                   paramTypeString);
+            cv.visitMethodInsn(INVOKESPECIAL,  Type.getType(superClass).getInternalName(), "<init>", paramTypeString);
             cv.visitInsn(RETURN);
             cv.visitMaxs(maxValue, 1);
         }
@@ -244,7 +244,7 @@
         }
 
 
-        Set<java.lang.reflect.Method> allMethods = new HashSet<java.lang.reflect.Method>();
+        Set<java.lang.reflect.Method> allMethods = new HashSet<>();
 
         for (java.lang.reflect.Method m : superClass.getMethods()) {
             if (qualifiedAsBeanMethod(m)) {
@@ -274,8 +274,7 @@
 
         // add toString() method if it was not overridden
         java.lang.reflect.Method mth = Object.class.getDeclaredMethod("toString");
-        if( !hasSameSignatureAsExisting(mth, allMethods)) {
-                        //generateBeanMethod(tv, subClassName, mth, delegateClass);
+        if (!hasSameSignatureAsExisting(mth, allMethods)) {
             generateToStringBeanMethod(tv, superClass);
         }
 
@@ -419,39 +418,4 @@
         mg2.returnValue();
         mg2.endMethod();
     }
-
-     // A Method for the protected ClassLoader.defineClass method, which we access
-    // using reflection.  This requires the supressAccessChecks permission.
-    private static final java.lang.reflect.Method defineClassMethod = AccessController.doPrivileged(
-        new PrivilegedAction<java.lang.reflect.Method>() {
-            public java.lang.reflect.Method run() {
-                try {
-                    java.lang.reflect.Method meth = ClassLoader.class.getDeclaredMethod(
-                    "defineClass", String.class,
-                    byte[].class, int.class, int.class,
-                    ProtectionDomain.class ) ;
-                    meth.setAccessible( true ) ;
-                    return meth ;
-                } catch (Exception exc) {
-                    throw new RuntimeException(
-                    "Could not find defineClass method!", exc ) ;
-                }
-            }
-        }
-    );
-
-    private static final Permission accessControlPermission = new ReflectPermission("suppressAccessChecks");
-
-    // This requires a permission check
-    private Class<?> makeClass(String name, byte[] def, ProtectionDomain pd, ClassLoader loader) {
-        SecurityManager sman = System.getSecurityManager();
-        if (sman != null) {
-            sman.checkPermission(accessControlPermission);
-        }
-        try {
-            return (Class) defineClassMethod.invoke(loader, name, def, 0, def.length, pd);
-        } catch (Exception exc) {
-            throw new RuntimeException("Could not invoke defineClass!", exc);
-        }
-    }
 }
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/Generator.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/Generator.java
index 63c52a8..6acfb2f 100644
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/Generator.java
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/Generator.java
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2021 Contributors to the Eclipse Foundation
+ * Copyright (c) 2021-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
@@ -17,29 +17,158 @@
 
 package com.sun.ejb.codegen;
 
+import com.sun.enterprise.loader.ASURLClassLoader;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.lang.invoke.MethodHandles;
+import java.lang.invoke.MethodHandles.Lookup;
 import java.lang.reflect.Method;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
+import java.util.Properties;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.glassfish.pfl.dynamic.codegen.impl.ClassGeneratorImpl;
+import org.glassfish.pfl.dynamic.codegen.spi.ImportList;
+import org.glassfish.pfl.dynamic.codegen.spi.Wrapper;
+
+import static org.glassfish.pfl.dynamic.codegen.impl.CodeGenerator.generateBytecode;
+import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper.DUMP_AFTER_SETUP_VISITOR;
+import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper.TRACE_BYTE_CODE_GENERATION;
+import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper.USE_ASM_VERIFIER;
+import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._classGenerator;
+import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._package;
 
 
 /**
  * The base class for all code generators.
  */
-public abstract class Generator implements ClassGeneratorFactory {
+public abstract class Generator {
+    private static final Logger LOG = Logger.getLogger(Generator.class.getName());
+
+    private final ClassLoader loader;
+
+
+    /**
+     * @param loader {@link ClassLoader} owning generated classes
+     */
+    public Generator(final ClassLoader loader) {
+        this.loader = Objects.requireNonNull(loader);
+    }
+
+    /**
+     * @return the name of the package of the generated class. Can be null.
+     */
+    protected abstract String getPackageName();
+
+    /**
+     * @return name of the generated class or interface
+     */
+    public abstract String getGeneratedClassName();
+
+    /**
+     * @return loadable class of the same package as {@link #getGeneratedClassName()}
+     */
+    protected abstract Class<?> getAnchorClass();
+
+    /**
+     * Calls {@link Wrapper} methods to configure the class definition.
+     * The {@link Wrapper} uses {@link ThreadLocal} internally, so you should
+     * always call {@link Wrapper#_clear()} in finally block after generation
+     * to avoid leakages.
+     */
+    protected abstract void defineClassBody();
+
+
+    /**
+     * @return {@link ClassLoader} owning the generated class.
+     */
+    public ClassLoader getClassLoader() {
+        return this.loader;
+    }
+
+
+    /**
+     * Generates the bytecode of the configured class with the usage of the PFL tool.
+     * Then uses {@link MethodHandles} or {@link ClassGenerator} to generate the class.
+     * <p>
+     * WARNING: This selection depends on the classloader capabilities and JVM rules,
+     * which change between JDK versions.
+     *
+     * @return {@link Class}
+     * @throws IllegalAccessException
+     */
+    public Class<?> generate() throws IllegalAccessException {
+        if (getPackageName() == null) {
+            _package();
+        } else {
+            _package(getPackageName());
+        }
+        final ImportList imports = Wrapper._import();
+        defineClassBody();
+        final Properties props = new Properties();
+        if (LOG.isLoggable(Level.FINEST)) {
+            props.put(DUMP_AFTER_SETUP_VISITOR, "true");
+            props.put(TRACE_BYTE_CODE_GENERATION, "true");
+            props.put(USE_ASM_VERIFIER, "true");
+            try {
+                final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                final PrintStream ps = new PrintStream(baos);
+                Wrapper._sourceCode(ps, props);
+                LOG.finest(baos.toString());
+            } catch (final Exception e) {
+                LOG.log(Level.WARNING, "Exception generating src for logs", e);
+            }
+        }
+
+        final ClassGeneratorImpl codeGenerator = (ClassGeneratorImpl) _classGenerator();
+        final byte[] bytecode = generateBytecode(codeGenerator, getClassLoader(), imports, props, System.out);
+
+        if (useMethodHandles()) {
+            LOG.log(Level.FINEST, "Using MethodHandles to define {0}, anchorClass: {1}",
+                new Object[] {getGeneratedClassName(), getAnchorClass()});
+            final Lookup lookup = MethodHandles.privateLookupIn(getAnchorClass(), MethodHandles.lookup());
+            return lookup.defineClass(bytecode);
+        }
+
+        if (System.getSecurityManager() == null) {
+            return ClassGenerator.defineClass(getClassLoader(), getGeneratedClassName(), bytecode,
+                getAnchorClass().getProtectionDomain());
+        }
+        final PrivilegedAction<Class<?>> action = () -> ClassGenerator.defineClass(getClassLoader(),
+            getGeneratedClassName(), bytecode);
+        return AccessController.doPrivileged(action);
+    }
+
+
+    private boolean useMethodHandles() {
+        // The bootstrap CL used by embedded glassfish doesn't remember generated classes
+        // Further ClassLoader.findClass calls will fail.
+        if (loader.getParent() == null || loader.getClass() == ASURLClassLoader.class) {
+            return false;
+        }
+        return Objects.equals(getPackageName(), getAnchorClass().getPackageName());
+    }
+
 
     /**
      * @return the package name or null.
      */
-    public static String getPackageName(String fullClassName) {
-        int dot = fullClassName.lastIndexOf('.');
+    public static String getPackageName(final String fullClassName) {
+        final int dot = fullClassName.lastIndexOf('.');
         return dot == -1 ? null : fullClassName.substring(0, dot);
     }
 
     /**
      * @return simple class name (including wrapper class and dollar sign if it is internal class)
      */
-    public static String getBaseName(String fullClassName) {
-        int dot = fullClassName.lastIndexOf('.');
+    public static String getBaseName(final String fullClassName) {
+        final int dot = fullClassName.lastIndexOf('.');
         return dot == -1 ? fullClassName : fullClassName.substring(dot + 1);
     }
 
@@ -56,12 +185,12 @@
      * @param methods
      * @return methods which can be generated in an interface
      */
-    protected Method[] removeRedundantMethods(Method[] methods) {
+    protected Method[] removeRedundantMethods(final Method[] methods) {
         final List<Method> nodups = new ArrayList<>();
-        for (Method method : methods) {
+        for (final Method method : methods) {
             boolean duplicationDetected = false;
             final List<Method> previousResult = new ArrayList<>(nodups);
-            for (Method alreadyProcessed : previousResult) {
+            for (final Method alreadyProcessed : previousResult) {
                 // m1 and m2 are duplicates if they have the same signature
                 // (name and same parameters).
                 if (!method.getName().equals(alreadyProcessed.getName())) {
@@ -93,8 +222,8 @@
 
 
     private boolean haveSameParams(final Method method1, final Method method2) {
-        Class<?>[] m1parms = method1.getParameterTypes();
-        Class<?>[] m2parms = method2.getParameterTypes();
+        final Class<?>[] m1parms = method1.getParameterTypes();
+        final Class<?>[] m2parms = method2.getParameterTypes();
         if (m1parms.length != m2parms.length) {
             return false;
         }
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/GeneratorException.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/GeneratorException.java
index cdcf97f..b89bbc6 100644
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/GeneratorException.java
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/GeneratorException.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 1997, 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
@@ -22,14 +23,27 @@
  */
 public class GeneratorException extends java.lang.Exception {
 
+    private static final long serialVersionUID = -6932740662092591668L;
+
+
     /**
      * Constructs the Generator exception with the specified string.
      *
-     * @param the string description
+     * @param message string description
      */
-    public GeneratorException(String s) {
-        super(s);
-        this.reason = s;
+    public GeneratorException(String message) {
+        super(message);
+    }
+
+
+    /**
+     * Constructs the Generator exception with the specified string.
+     *
+     * @param message string description
+     * @param cause exception which caused the failure
+     */
+    public GeneratorException(String message, Exception cause) {
+        super(message, cause);
     }
 
 
@@ -40,11 +54,6 @@
      */
     @Override
     public String toString() {
-        return reason;
+        return getMessage();
     }
-
-    /**
-     * @serial XXX needs doc
-     */
-    private final String reason;
 }
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/GenericHomeGenerator.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/GenericHomeGenerator.java
index 789dc91..2da65d5 100644
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/GenericHomeGenerator.java
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/GenericHomeGenerator.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) 2021-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
@@ -26,12 +26,9 @@
 import static java.lang.reflect.Modifier.PUBLIC;
 import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._String;
 import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._arg;
-import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._classGenerator;
-import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._clear;
 import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._end;
 import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._interface;
 import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._method;
-import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._package;
 import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._t;
 
 /**
@@ -41,11 +38,26 @@
  */
 public class GenericHomeGenerator extends Generator {
 
+    public static final String GENERIC_HOME_CLASSNAME = "GenericEJBHome_Generated";
+    private final Class<?> anchorClass;
+    private final String packageName;
+
     /**
-     * This class name is relative to the classloader used, but has always the same name.
+     * @param loader {@link ClassLoader} owning generated classes
+     * @param anchorClass
      */
-    public static final String GENERIC_HOME_CLASSNAME = GenericHomeGenerator.class.getPackageName()
-        + ".GenericEJBHome_Generated";
+    public GenericHomeGenerator(final ClassLoader loader, final Class<?> anchorClass) {
+        super(loader);
+        this.anchorClass = anchorClass;
+        this.packageName = getClass().getPackageName();
+    }
+
+
+    @Override
+    public String getPackageName() {
+        return this.packageName;
+    }
+
 
     /**
      * Get the fully qualified name of the generated class.
@@ -53,34 +65,21 @@
      */
     @Override
     public final String getGeneratedClassName() {
-        return GENERIC_HOME_CLASSNAME;
+        return packageName + "." + GENERIC_HOME_CLASSNAME;
     }
 
 
     @Override
     public Class<?> getAnchorClass() {
-        return GenericHomeGenerator.class;
+        return this.anchorClass;
     }
 
 
     @Override
-    public void evaluate() {
-        _clear();
-
-        String packageName = getPackageName(getGeneratedClassName());
-        String simpleName = getBaseName(getGeneratedClassName());
-
-        _package(packageName);
-
-        _interface(PUBLIC, simpleName, _t(GenericEJBHome.class.getName()));
-
+    public void defineClassBody() {
+        _interface(PUBLIC, GENERIC_HOME_CLASSNAME, _t(GenericEJBHome.class.getName()));
         _method(PUBLIC | ABSTRACT, _t(Remote.class.getName()), "create", _t(RemoteException.class.getName()));
-
         _arg(_String(), "generatedBusinessIntf");
-
         _end();
-
-        _classGenerator() ;
     }
-
 }
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/InvalidBean.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/InvalidBean.java
deleted file mode 100644
index 5e431f2..0000000
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/InvalidBean.java
+++ /dev/null
@@ -1,27 +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
- */
-
-package com.sun.ejb.codegen;
-
-public class InvalidBean extends GeneratorException {
-
-    /**
-     * Constructs the InvalidBean exception with the specified string.
-     */
-    public InvalidBean(String s) {
-        super(s);
-    }
-}
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/MethodNotFound.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/MethodNotFound.java
index cd2921b..b27905e 100644
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/MethodNotFound.java
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/MethodNotFound.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 1997, 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
@@ -18,10 +19,12 @@
 
 public class MethodNotFound extends GeneratorException {
 
+    private static final long serialVersionUID = -5823170654151164530L;
+
     /**
      * Constructs the MethodNotFound exception with the specified string.
      */
-    public MethodNotFound(String s) {
-        super(s);
+    public MethodNotFound(String message) {
+        super(message);
     }
 }
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/Remote30WrapperGenerator.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/Remote30WrapperGenerator.java
index c90f20a..f84f935 100644
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/Remote30WrapperGenerator.java
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/Remote30WrapperGenerator.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) 2021-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
@@ -22,6 +22,15 @@
 import com.sun.ejb.containers.RemoteBusinessWrapperBase;
 import com.sun.enterprise.util.LocalStringManagerImpl;
 
+import jakarta.ejb.EJBAccessException;
+import jakarta.ejb.EJBException;
+import jakarta.ejb.EJBObject;
+import jakarta.ejb.EJBTransactionRequiredException;
+import jakarta.ejb.EJBTransactionRolledbackException;
+import jakarta.ejb.NoSuchEJBException;
+import jakarta.transaction.TransactionRequiredException;
+import jakarta.transaction.TransactionRolledbackException;
+
 import java.lang.reflect.Method;
 import java.rmi.AccessException;
 import java.rmi.NoSuchObjectException;
@@ -29,30 +38,21 @@
 import java.rmi.RemoteException;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Properties;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
 import org.glassfish.pfl.dynamic.codegen.spi.Expression;
 import org.glassfish.pfl.dynamic.codegen.spi.Type;
 import org.omg.CORBA.SystemException;
 
-import jakarta.ejb.EJBAccessException;
-import jakarta.ejb.EJBException;
-import jakarta.ejb.EJBTransactionRequiredException;
-import jakarta.ejb.EJBTransactionRolledbackException;
-import jakarta.ejb.NoSuchEJBException;
-import jakarta.transaction.TransactionRequiredException;
-import jakarta.transaction.TransactionRolledbackException;
-
 import static java.lang.reflect.Modifier.PRIVATE;
 import static java.lang.reflect.Modifier.PUBLIC;
 import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper.*;
 
+
+/**
+ * Generator of EJB 3.0+ Remote client stub implementations.
+ */
 public final class Remote30WrapperGenerator extends Generator {
 
-    private static final LocalStringManagerImpl localStrings = new LocalStringManagerImpl(Remote30WrapperGenerator.class);
-    private static final Logger LOG = Logger.getLogger(Remote30WrapperGenerator.class.getName());
+    private static final LocalStringManagerImpl I18N = new LocalStringManagerImpl(Remote30WrapperGenerator.class);
 
     private final String remoteInterfaceName;
     private final Class<?> businessInterface;
@@ -61,18 +61,16 @@
     private final String remoteClientSimpleName;
     private final Method[] methodsToGenerate;
 
-    private final ClassLoader loader;
-
-
     /**
      * Adds _Wrapper to the original name.
      *
      * @param businessIntf full class name
+     * @return [businessIntf]_Wrapper
      */
-    public static String getGeneratedRemoteWrapperName(String businessIntf) {
-        String packageName = getPackageName(businessIntf);
-        String simpleName = getBaseName(businessIntf);
-        String generatedSimpleName = "_" + simpleName + "_Wrapper";
+    public static String getGeneratedRemoteWrapperName(final String businessIntf) {
+        final String packageName = getPackageName(businessIntf);
+        final String simpleName = getBaseName(businessIntf);
+        final String generatedSimpleName = "_" + simpleName + "_Wrapper";
         return packageName == null ? generatedSimpleName : packageName + "." + generatedSimpleName;
     }
 
@@ -86,23 +84,23 @@
      *
      * @throws GeneratorException
      */
-    public Remote30WrapperGenerator(ClassLoader loader, String businessIntfName, String remoteInterfaceName)
+    public Remote30WrapperGenerator(final ClassLoader loader, final String businessIntfName, final String remoteInterfaceName)
         throws GeneratorException {
 
-        this.loader = loader;
+        super(loader);
         this.remoteInterfaceName = remoteInterfaceName;
 
         try {
             businessInterface = loader.loadClass(businessIntfName);
-        } catch (ClassNotFoundException ex) {
-            throw new InvalidBean(localStrings.getLocalString(
+        } catch (final ClassNotFoundException ex) {
+            throw new GeneratorException(I18N.getLocalString(
                 "generator.remote_interface_not_found",
                 "Business interface " + businessIntfName + " not found "));
         }
 
-        if (jakarta.ejb.EJBObject.class.isAssignableFrom(businessInterface)) {
+        if (EJBObject.class.isAssignableFrom(businessInterface)) {
             throw new GeneratorException("Invalid Remote Business Interface " + businessInterface
-                + ". A Remote Business interface MUST not extend jakarta.ejb.EJBObject.");
+                + ". A Remote Business interface MUST NOT extend jakarta.ejb.EJBObject.");
         }
 
         remoteClientClassName = getGeneratedRemoteWrapperName(businessIntfName);
@@ -111,11 +109,16 @@
 
         methodsToGenerate = removeRedundantMethods(businessInterface.getMethods());
 
-        // NOTE : no need to remove ejb object methods because EJBObject
+        // NOTE: no need to remove ejb object methods because EJBObject
         // is only visible through the RemoteHome view.
     }
 
     @Override
+    public String getPackageName() {
+        return this.remoteClientPackageName;
+    }
+
+    @Override
     public String getGeneratedClassName() {
         return remoteClientClassName;
     }
@@ -126,17 +129,7 @@
     }
 
     @Override
-    public void evaluate() {
-
-        _clear();
-
-        if (remoteClientPackageName != null) {
-            _package(remoteClientPackageName);
-        } else {
-            // no-arg _package() call is required for default package
-            _package();
-        }
-
+    public void defineClassBody() {
         _class(PUBLIC, remoteClientSimpleName,
                _t(RemoteBusinessWrapperBase.class.getName()),
                _t(businessInterface.getName()));
@@ -152,39 +145,28 @@
         _assign(_v("delegate_"), _v("stub"));
         _end();
 
-        for (Method method : methodsToGenerate) {
+        for (final Method method : methodsToGenerate) {
             printMethodImpl(method);
         }
 
         _end();
-
-        try {
-            Properties p = new Properties();
-            p.put("Wrapper.DUMP_AFTER_SETUP_VISITOR", "true");
-            p.put("Wrapper.TRACE_BYTE_CODE_GENERATION", "true");
-            p.put("Wrapper.USE_ASM_VERIFIER", "true");
-            _byteCode(loader, p);
-        } catch(Exception e) {
-            LOG.log(Level.WARNING, "Got exception when generating byte code", e);
-        }
-
-        _classGenerator() ;
     }
 
 
-    private void printMethodImpl(Method m) {
-        List<Type> exceptionList = new LinkedList<>();
-        for (Class<?> exception : m.getExceptionTypes()) {
+    private void printMethodImpl(final Method m) {
+        final List<Type> exceptionList = new LinkedList<>();
+        for (final Class<?> exception : m.getExceptionTypes()) {
             exceptionList.add(Type.type(exception));
         }
 
-        _method(PUBLIC, Type.type(m.getReturnType()), m.getName(), exceptionList);
+        final Type returnType = Type.type(m.getReturnType());
+        _method(PUBLIC, returnType, m.getName(), exceptionList);
 
         int i = 0;
-        List<Type> expressionListTypes = new LinkedList<>();
-        List<Expression> expressionList = new LinkedList<>();
-        for (Class<?> param : m.getParameterTypes()) {
-            String paramName = "param" + i;
+        final List<Type> expressionListTypes = new LinkedList<>();
+        final List<Expression> expressionList = new LinkedList<>();
+        for (final Class<?> param : m.getParameterTypes()) {
+            final String paramName = "param" + i;
             _arg(Type.type(param), paramName);
             i++;
             expressionListTypes.add(Type.type(param));
@@ -195,17 +177,15 @@
 
         _try();
 
-        Class<?> returnType = m.getReturnType();
-
-        if (returnType == void.class) {
+        if (m.getReturnType() == void.class) {
             _expr(
-                _call(_v("delegate_"), m.getName(), _s(Type.type(returnType), expressionListTypes), expressionList));
+                _call(_v("delegate_"), m.getName(), _s(returnType, expressionListTypes), expressionList));
         } else {
             _return(
-                _call(_v("delegate_"), m.getName(), _s(Type.type(returnType), expressionListTypes), expressionList));
+                _call(_v("delegate_"), m.getName(), _s(returnType, expressionListTypes), expressionList));
         }
 
-        boolean doExceptionTranslation = !Remote.class.isAssignableFrom(businessInterface);
+        final boolean doExceptionTranslation = !Remote.class.isAssignableFrom(businessInterface);
         if (doExceptionTranslation) {
             _catch(_t(TransactionRolledbackException.class.getName()), "trex");
 
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/RemoteGenerator.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/RemoteGenerator.java
index 8580703..942c560 100644
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/RemoteGenerator.java
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/RemoteGenerator.java
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2021 Contributors to the Eclipse Foundation
+ * Copyright (c) 2021-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
@@ -30,17 +30,13 @@
 import static java.lang.reflect.Modifier.ABSTRACT;
 import static java.lang.reflect.Modifier.PUBLIC;
 import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._arg;
-import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._classGenerator;
-import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._clear;
 import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._end;
 import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._interface;
 import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._method;
-import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._package;
 import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._t;
 
 /**
- * This class is used to generate the RMI-IIOP version of a
- * remote business interface.
+ * This class is used to generate the RMI-IIOP version of a remote business interface.
  */
 public final class RemoteGenerator extends Generator {
 
@@ -72,13 +68,14 @@
      *
      * @param classLoader
      * @param businessIntf
-     * @throws InvalidBean if the businessInterface doesn't exist.
+     * @throws GeneratorException if the businessInterface doesn't exist.
      */
-    public RemoteGenerator(ClassLoader classLoader, String businessIntf) throws InvalidBean {
+    public RemoteGenerator(ClassLoader classLoader, String businessIntf) throws GeneratorException {
+        super(classLoader);
         try {
             businessInterface = classLoader.loadClass(businessIntf);
         } catch (ClassNotFoundException ex) {
-            throw new InvalidBean(
+            throw new GeneratorException(
                 localStrings.getLocalString("generator.remote_interface_not_found", "Remote interface not found "));
         }
 
@@ -92,6 +89,11 @@
         // is only visible through the RemoteHome view.
     }
 
+    @Override
+    public String getPackageName() {
+        return this.remoteInterfacePackageName;
+    }
+
     /**
      * Get the fully qualified name of the generated class.
      * <p>
@@ -111,16 +113,7 @@
     }
 
     @Override
-    public void evaluate() {
-
-        _clear();
-
-        if (remoteInterfacePackageName != null) {
-            _package(remoteInterfacePackageName);
-        } else {
-            _package();
-        }
-
+    public void defineClassBody() {
         _interface(PUBLIC, remoteInterfaceSimpleName,
             _t(java.rmi.Remote.class.getName()),
             _t(RemoteBusinessObject.class.getName())
@@ -131,8 +124,6 @@
         }
 
         _end();
-
-        _classGenerator() ;
     }
 
 
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/ServiceInterfaceGenerator.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/ServiceInterfaceGenerator.java
index ed9abd8..ed38f43 100644
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/ServiceInterfaceGenerator.java
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/ServiceInterfaceGenerator.java
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2021 Contributors to the Eclipse Foundation
+ * Copyright (c) 2021-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
@@ -17,24 +17,22 @@
 
 package com.sun.ejb.codegen;
 
+import jakarta.jws.WebMethod;
 
 import java.lang.reflect.Method;
 import java.rmi.RemoteException;
 import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
-import org.glassfish.pfl.dynamic.codegen.spi.Type ;
 
-import jakarta.jws.WebMethod;
+import org.glassfish.pfl.dynamic.codegen.spi.Type ;
 
 import static java.lang.reflect.Modifier.ABSTRACT;
 import static java.lang.reflect.Modifier.PUBLIC;
 import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._arg;
-import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._clear;
 import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._end;
 import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._interface;
 import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._method;
-import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._package;
 import static org.glassfish.pfl.dynamic.codegen.spi.Wrapper._t;
 
 /**
@@ -51,11 +49,15 @@
     private final String serviceIntfSimpleName;
     private final Method[] intfMethods;
 
-   /**
+    /**
      * Construct the Wrapper generator with the specified deployment
      * descriptor and class loader.
+     *
+     * @param loader {@link ClassLoader} owning generated classes
+     * @param ejbClass
      */
-    public ServiceInterfaceGenerator(Class<?> ejbClass) {
+    public ServiceInterfaceGenerator(final ClassLoader loader, final Class<?> ejbClass) {
+        super(loader);
         this.ejbClass = ejbClass;
         packageName = getPackageName(ejbClass.getName());
         serviceIntfSimpleName = getServiceIntfName(ejbClass);
@@ -66,6 +68,10 @@
         // is only visible through the RemoteHome view.
     }
 
+    @Override
+    public String getPackageName() {
+        return this.packageName;
+    }
 
     /**
      * Get the fully qualified name of the generated class.
@@ -88,13 +94,7 @@
 
 
     @Override
-    public void evaluate() {
-        _clear();
-
-        if (packageName != null) {
-            _package(packageName);
-        }
-
+    public void defineClassBody() {
         _interface(PUBLIC, serviceIntfSimpleName);
 
         for (Method intfMethod : intfMethods) {
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/BaseContainer.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/BaseContainer.java
index f19c2fa..426fa2b 100644
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/BaseContainer.java
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/BaseContainer.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 1997, 2021 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
@@ -17,13 +18,12 @@
 package com.sun.ejb.containers;
 
 import java.io.Serializable;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.lang.reflect.Proxy;
 import java.rmi.AccessException;
+import java.rmi.Remote;
 import java.rmi.RemoteException;
 import java.util.ArrayDeque;
 import java.util.ArrayList;
@@ -78,7 +78,6 @@
 import com.sun.ejb.InvocationInfo;
 import com.sun.ejb.MethodLockInfo;
 import com.sun.ejb.codegen.EjbOptionalIntfGenerator;
-import com.sun.ejb.codegen.ServiceInterfaceGenerator;
 import com.sun.ejb.containers.interceptors.InterceptorManager;
 import com.sun.ejb.containers.interceptors.SystemInterceptorProxy;
 import com.sun.ejb.containers.util.MethodMap;
@@ -153,7 +152,6 @@
  * subclasses provide the remaining implementation of the container functionality.
  *
  */
-
 public abstract class BaseContainer implements Container, EjbContainerFacade, JavaEEContainer {
     public enum ContainerType {
         STATELESS, STATEFUL, SINGLETON, MESSAGE_DRIVEN, ENTITY, READ_ONLY
@@ -196,9 +194,7 @@
 
     protected static final Class[] NO_PARAMS = new Class[] {};
 
-    protected Object[] logParams = null;
-
-    protected ContainerType containerType;
+    protected final ContainerInfo containerInfo;
 
     // constants for EJB(Local)Home/EJB(Local)Object methods,
     // used in authorizeRemoteMethod and authorizeLocalMethod
@@ -230,20 +226,20 @@
 
     protected static final String SINGLETON_BEAN_POOL_PROP = "singleton-bean-pool";
 
-    protected ClassLoader loader = null;
-    protected Class ejbClass = null;
-    protected Class sfsbSerializedClass = null;
-    protected Method ejbPassivateMethod = null;
-    protected Method ejbActivateMethod = null;
-    protected Method ejbRemoveMethod = null;
-    private Method ejbTimeoutMethod = null;
+    protected final ClassLoader loader;
+    protected Class<?> ejbClass;
+    protected Class sfsbSerializedClass;
+    protected Method ejbPassivateMethod;
+    protected Method ejbActivateMethod;
+    protected Method ejbRemoveMethod;
+    private Method ejbTimeoutMethod;
 
-    protected Class webServiceEndpointIntf = null;
+    protected Class webServiceEndpointIntf;
 
     // true if exposed as a web service endpoint.
-    protected boolean isWebServiceEndpoint = false;
+    protected boolean isWebServiceEndpoint;
 
-    private boolean isTimedObject_ = false;
+    private boolean isTimedObject_;
 
     /*****************************************
      * Data members for Local views *
@@ -251,15 +247,15 @@
 
     // True if bean has a LocalHome/Local view
     // OR a Local business view OR both.
-    protected boolean isLocal = false;
+    protected boolean isLocal;
 
     // True if bean exposes a local home view
-    protected boolean hasLocalHomeView = false;
+    protected boolean hasLocalHomeView;
 
     // True if bean exposes a local business view
-    protected boolean hasLocalBusinessView = false;
+    protected boolean hasLocalBusinessView;
 
-    protected boolean hasOptionalLocalBusinessView = false;
+    protected boolean hasOptionalLocalBusinessView;
 
     protected Class ejbGeneratedOptionalLocalBusinessIntfClass;
     //
@@ -267,10 +263,10 @@
     //
 
     // LocalHome interface written by developer
-    protected Class localHomeIntf = null;
+    protected Class localHomeIntf;
 
     // Local interface written by developer
-    private Class localIntf = null;
+    private Class localIntf;
 
     // Client reference to ejb local home
     protected EJBLocalHome ejbLocalHome;
@@ -279,17 +275,14 @@
     // object as ejbLocalHome, for example in the case of dynamic proxies.
     protected EJBLocalHomeImpl ejbLocalHomeImpl;
 
-    // Constructor used to instantiate ejb local object proxy.
-    private Constructor ejbLocalObjectProxyCtor;
-
     //
     // Data members for 3.x Local business view
     //
 
     // Internal interface describing operation used to create an
     // instance of a local business object. (GenericEJBLocalHome)
-    protected Class localBusinessHomeIntf = null;
-    protected Class ejbOptionalLocalBusinessHomeIntf = null;
+    protected Class localBusinessHomeIntf;
+    protected Class ejbOptionalLocalBusinessHomeIntf;
 
     // Local business interface written by developer
     protected Set<Class> localBusinessIntfs = new HashSet();
@@ -307,13 +300,7 @@
     // Implementation of internal local business home interface.
     protected EJBLocalHomeImpl ejbOptionalLocalBusinessHomeImpl;
 
-    // Constructor used to instantiate local business object proxy.
-    private Constructor ejbLocalBusinessObjectProxyCtor;
-
-    // Constructor used to instantiate local business object proxy.
-    private Constructor ejbOptionalLocalBusinessObjectProxyCtor;
-
-    private Collection<EjbContainerInterceptor> interceptors = null;
+    private Collection<EjbContainerInterceptor> interceptors;
 
     /*****************************************
      * Data members for Remote views *
@@ -321,23 +308,23 @@
 
     // True if bean has a RemoteHome/Remote view
     // OR a Remote business view OR both.
-    protected boolean isRemote = false;
+    protected boolean isRemote;
 
     // True if bean exposes a RemoteHome view
-    protected boolean hasRemoteHomeView = false;
+    protected boolean hasRemoteHomeView;
 
     // True if bean exposes a Remote Business view.
-    protected boolean hasRemoteBusinessView = false;
+    protected boolean hasRemoteBusinessView;
 
     //
     // Data members for RemoteHome/Remote view
     //
 
     // Home interface written by developer.
-    protected Class homeIntf = null;
+    protected Class homeIntf;
 
     // Remote interface written by developer.
-    protected Class remoteIntf = null;
+    protected Class remoteIntf;
 
     // Container implementation of EJB Home. May or may not be the same
     // object as ejbHome, for example in the case of dynamic proxies.
@@ -353,11 +340,8 @@
     // Remote interface proxy class
     private Class ejbObjectProxyClass;
 
-    // Remote interface proxy constructor.
-    private Constructor ejbObjectProxyCtor;
-
     // RemoteReference Factory for RemoteHome view
-    protected RemoteReferenceFactory remoteHomeRefFactory = null;
+    protected RemoteReferenceFactory remoteHomeRefFactory;
 
     //
     // Data members for 3.x Remote business view
@@ -365,7 +349,7 @@
 
     // Internal interface describing operation used to create an
     // instance of a remote business object.
-    protected Class remoteBusinessHomeIntf = null;
+    protected Class remoteBusinessHomeIntf;
 
     // Container implementation of internal EJB Business Home. May or may
     // not be same object as ejbRemoteBusinessHome, for example in the
@@ -389,7 +373,7 @@
     // END -- Data members for Remote views
     //
 
-    protected EJBMetaData metadata = null;
+    protected EJBMetaData metadata;
 
     protected final SecurityManager securityManager;
 
@@ -421,9 +405,9 @@
     protected InvocationInfo[] ejbIntfMethodInfo;
 
     protected Properties envProps;
-    protected boolean isBeanManagedTran = false;
+    protected boolean isBeanManagedTran;
 
-    protected boolean debugMonitorFlag = false;
+    protected boolean debugMonitorFlag;
 
     private static LocalStringManagerImpl localStrings = new LocalStringManagerImpl(BaseContainer.class);
 
@@ -438,7 +422,7 @@
     protected int containerState = CONTAINER_INITIALIZING;
 
     protected HashMap methodMonitorMap;
-    protected boolean monitorOn = false;
+    protected boolean monitorOn;
 
     protected EjbMonitoringStatsProvider ejbProbeListener;
     protected EjbMonitoringProbeProvider ejbProbeNotifier;
@@ -448,19 +432,16 @@
     protected EjbCacheProbeProvider cacheProbeNotifier;
     protected EjbCacheStatsProvider cacheProbeListener;
 
-    protected ContainerInfo containerInfo;
-
     private final String _debugDescription;
 
-    //protected Agent callFlowAgent;
-
     protected CallFlowInfo callFlowInfo;
 
     protected InterceptorManager interceptorManager;
 
     // the order must be the same as CallbackType and getPre30LifecycleMethodNames
-    private static final Class[] lifecycleCallbackAnnotationClasses = { AroundConstruct.class, PostConstruct.class, PreDestroy.class,
-        PrePassivate.class, PostActivate.class };
+    private static final Class[] lifecycleCallbackAnnotationClasses = {
+        AroundConstruct.class, PostConstruct.class, PreDestroy.class, PrePassivate.class, PostActivate.class
+    };
 
     private final Set<Class> monitoredGeneratedClasses = new HashSet<>();
 
@@ -492,10 +473,10 @@
 
     // Used to track whether we've done the base container cleanup (JNDI entries, etc.)
     // Only.  Not applicable to concrete containers.
-    private boolean baseContainerCleanupDone = false;
+    private boolean baseContainerCleanupDone;
 
     // True if there is at least one asynchronous method exposed from the bean.
-    private boolean hasAsynchronousInvocations = false;
+    private boolean hasAsynchronousInvocations;
 
     // Information about a web service ejb endpoint.  Used as a conduit
     // between webservice runtime and ejb container.  Contains a Remote
@@ -511,20 +492,21 @@
 
     private final JCDIService jcdiService;
 
+    private Class[] ejbLocalBusinessProxyInterfaces;
+
+    private Class[] ejbOptionalLocalBusinessHomeProxyInterfaces;
+
     /**
      * This constructor is called from ContainerFactoryImpl when an EJB Jar is deployed.
      */
-    protected BaseContainer(ContainerType type, EjbDescriptor ejbDesc, ClassLoader loader, SecurityManager sm) throws Exception {
-        this.containerType = type;
+    protected BaseContainer(final ContainerType type, final EjbDescriptor ejbDesc, final ClassLoader loader,
+        final SecurityManager sm) throws Exception {
+        this.ejbDescriptor = ejbDesc;
+        this.loader = loader;
         this.securityManager = sm;
+        this.containerInfo = createContainerInfo(type, ejbDesc);
 
         try {
-            this.loader = loader;
-            this.ejbDescriptor = ejbDesc;
-            //this.callFlowAgent = ejbContainerUtilImpl.getCallFlowAgent();
-
-            logParams = new Object[1];
-            logParams[0] = ejbDesc.getName();
             invocationManager = ejbContainerUtilImpl.getInvocationManager();
             injectionManager = ejbContainerUtilImpl.getInjectionManager();
             namingManager = ejbContainerUtilImpl.getGlassfishNamingManager();
@@ -560,8 +542,7 @@
                          * uses ASM directly instead of the CORBA codegen library since none of the corba .jars are part of the Web Profile.
                          */
                         if (!Serializable.class.isAssignableFrom(ejbClass)) {
-
-                            sfsbSerializedClass = EJBUtils.loadGeneratedSerializableClass(ejbClass.getClassLoader(), ejbClass.getName());
+                            sfsbSerializedClass = EJBUtils.loadGeneratedSerializableClass(loader, ejbClass);
                         }
 
                     }
@@ -599,20 +580,10 @@
                 isRemote = true;
                 hasRemoteBusinessView = true;
 
-                remoteBusinessHomeIntf = EJBUtils.loadGeneratedGenericEJBHomeClass(loader);
+                remoteBusinessHomeIntf = EJBUtils.loadGeneratedGenericEJBHomeClass(loader, ejbClass);
 
                 for (String next : ejbDescriptor.getRemoteBusinessClassNames()) {
-
-                    // The generated remote business interface and the
-                    // client wrapper for the business interface are
-                    // produced dynamically.  The following call must be
-                    // made before any EJB 3.0 Remote business interface
-                    // runtime behavior is needed for a particular
-                    // classloader.
-                    String nextGen = EJBUtils.loadGeneratedRemoteBusinessClasses(loader, next);
-
-                    Class<?> genRemoteIntf = loader.loadClass(nextGen);
-
+                    Class<?> genRemoteIntf = EJBUtils.loadGeneratedRemoteBusinessClasses(loader, next);
                     RemoteBusinessIntfInfo info = new RemoteBusinessIntfInfo();
                     info.generatedRemoteIntf = genRemoteIntf;
                     info.remoteBusinessIntf = loader.loadClass(next);
@@ -626,7 +597,7 @@
 
                     remoteBusinessIntfInfo.put(genRemoteIntf.getName(), info);
 
-                    addToGeneratedMonitoredMethodInfo(nextGen, genRemoteIntf);
+                    addToGeneratedMonitoredMethodInfo(genRemoteIntf);
                 }
 
             }
@@ -651,7 +622,7 @@
                 for (String next : ejbDescriptor.getLocalBusinessClassNames()) {
                     Class clz = loader.loadClass(next);
                     localBusinessIntfs.add(clz);
-                    addToGeneratedMonitoredMethodInfo(next, clz);
+                    addToGeneratedMonitoredMethodInfo(clz);
                 }
             }
 
@@ -661,7 +632,7 @@
 
                 ejbOptionalLocalBusinessHomeIntf = GenericEJBLocalHome.class;
                 Class clz = loader.loadClass(ejbDescriptor.getEjbClassName());
-                addToGeneratedMonitoredMethodInfo(ejbDescriptor.getEjbClassName(), clz);
+                addToGeneratedMonitoredMethodInfo(clz);
 
                 this.optIntfClassName = EJBUtils.getGeneratedOptionalInterfaceName(ejbClass.getName());
                 optIntfClassLoader = new EjbOptionalIntfGenerator(loader);
@@ -672,13 +643,11 @@
             if (isStatelessSession || isSingleton) {
                 EjbBundleDescriptorImpl bundle = ejbDescriptor.getEjbBundleDescriptor();
                 WebServicesDescriptor webServices = bundle.getWebServices();
-                Collection endpoints = webServices.getEndpointsImplementedBy(ejbDescriptor);
+                Collection<?> endpoints = webServices.getEndpointsImplementedBy(ejbDescriptor);
                 // JSR 109 doesn't require support for a single ejb
                 // implementing multiple port ex.
                 if (endpoints.size() == 1) {
-
                     assertFullProfile("is a Web Service Endpoint");
-
                     webServiceEndpointIntf = loader.loadClass(ejbDescriptor.getWebServiceEndpointInterfaceName());
                     isWebServiceEndpoint = true;
                 }
@@ -715,9 +684,7 @@
                                 ejbClass.getName(), schd.getTimeoutMethod().getFormattedString()));
                     }
 
-                    if (_logger.isLoggable(Level.FINE)) {
-                        _logger.log(Level.FINE, "... processing " + method);
-                    }
+                    _logger.log(Level.FINE, "... processing {0}", method);
                     processEjbTimeoutMethod(method);
 
                     List<ScheduledTimerDescriptor> list = schedules.get(method);
@@ -767,7 +734,7 @@
 
             initEjbInterceptors();
         } catch (Exception ex) {
-            _logger.log(Level.FINE, "Exception creating BaseContainer : [{0}]", logParams);
+            _logger.log(Level.FINE, "Exception creating BaseContainer : [{0}]", containerInfo);
             _logger.log(Level.FINE, "", ex);
             throw ex;
         }
@@ -780,8 +747,8 @@
         return protocolMgr;
     }
 
-    public ContainerType getContainerType() {
-        return containerType;
+    public ContainerInfo getContainerInfo() {
+        return this.containerInfo;
     }
 
     protected void doEJBHomeRemove(Object pk, Method m, boolean isLocal) throws RemoteException, RemoveException {
@@ -789,7 +756,7 @@
             localStrings.getLocalString("ejb.ejbhome_remove_on_nonentity", "EJBHome.remove() called on non entity container"));
     }
 
-    private void addToGeneratedMonitoredMethodInfo(String qualifiedClassName, Class generatedClass) {
+    private void addToGeneratedMonitoredMethodInfo(Class generatedClass) {
         monitoredGeneratedClasses.add(generatedClass);
     }
 
@@ -1045,12 +1012,11 @@
                     }
                 });
             }
-            java.rmi.Remote remoteRef = null;
+            final java.rmi.Remote remoteRef;
             if (generatedRemoteBusinessIntf == null) {
                 remoteRef = remoteHomeRefFactory.createRemoteReference(instanceKey);
             } else {
                 RemoteReferenceFactory remoteBusinessRefFactory = remoteBusinessIntfInfo.get(generatedRemoteBusinessIntf).referenceFactory;
-
                 remoteRef = remoteBusinessRefFactory.createRemoteReference(instanceKey);
             }
             return remoteRef;
@@ -1092,24 +1058,21 @@
 
             EjbBundleDescriptorImpl bundle = ejbDescriptor.getEjbBundleDescriptor();
             WebServicesDescriptor webServices = bundle.getWebServices();
-            Collection myEndpoints = webServices.getEndpointsImplementedBy(ejbDescriptor);
+            Collection<WebServiceEndpoint> myEndpoints = webServices.getEndpointsImplementedBy(ejbDescriptor);
 
             // An ejb can only be exposed through 1 web service endpoint
-            Iterator iter = myEndpoints.iterator();
-            webServiceEndpoint = (com.sun.enterprise.deployment.WebServiceEndpoint) iter.next();
+            webServiceEndpoint = myEndpoints.iterator().next();
 
-            Class serviceEndpointIntfClass = loader.loadClass(webServiceEndpoint.getServiceEndpointInterface());
-
+            Class<?> serviceEndpointIntfClass = loader.loadClass(webServiceEndpoint.getServiceEndpointInterface());
             if (!serviceEndpointIntfClass.isInterface()) {
-                ServiceInterfaceGenerator generator = new ServiceInterfaceGenerator(ejbClass);
-                serviceEndpointIntfClass = EJBUtils.generateSEI(generator, loader);
+                serviceEndpointIntfClass = EJBUtils.generateSEI(loader, ejbClass);
                 if (serviceEndpointIntfClass == null) {
                     throw new RuntimeException(localStrings.getLocalString("ejb.error_generating_sei",
                         "Error in generating service endpoint interface class for EJB class {0}", this.ejbClass));
                 }
             }
 
-            Class tieClass = null;
+            Class<?> tieClass = null;
 
             WebServiceInvocationHandler invocationHandler = new WebServiceInvocationHandler(ejbClass, webServiceEndpoint,
                 serviceEndpointIntfClass, ejbContainerUtilImpl, webServiceInvocationInfoMap);
@@ -1122,16 +1085,13 @@
                 tieClass = loader.loadClass(webServiceEndpoint.getTieClassName());
             }
 
-            // Create a facade for container services to be used by web services runtime.
-            EjbEndpointFacade endpointFacade = new EjbEndpointFacadeImpl(this, ejbContainerUtilImpl);
-
             wsejbEndpointRegistry = Globals.getDefaultHabitat().getService(WSEjbEndpointRegistry.class);
-            if (wsejbEndpointRegistry != null) {
-                wsejbEndpointRegistry.registerEndpoint(webServiceEndpoint, endpointFacade, servant, tieClass);
-            } else {
+            if (wsejbEndpointRegistry == null) {
                 throw new DeploymentException(localStrings.getLocalString("ejb.no_webservices_module",
                     "EJB-based Webservice endpoint is detected but there is no webservices module installed to handle it"));
             }
+            EjbEndpointFacade endpointFacade = new EjbEndpointFacadeImpl(this, ejbContainerUtilImpl);
+            wsejbEndpointRegistry.registerEndpoint(webServiceEndpoint, endpointFacade, servant, tieClass);
         }
 
         Map<String, Object> intfsForPortableJndi = new HashMap<>();
@@ -1170,12 +1130,6 @@
                 this.ejbHomeImpl = instantiateEJBHomeImpl();
                 this.ejbHome = ejbHomeImpl.getEJBHome();
 
-                // Since some containers might create multiple EJBObjects for
-                // the same ejb, make sure we use the same Proxy class to
-                // instantiate all the proxy instances.
-                ejbObjectProxyClass = Proxy.getProxyClass(loader, new Class[] { remoteIntf });
-                ejbObjectProxyCtor = ejbObjectProxyClass.getConstructor(new Class[] { InvocationHandler.class });
-
                 //
                 // Make sure all Home/Remote interfaces conform to RMI-IIOP
                 // rules.  Checking for conformance here keeps the exposed
@@ -1230,11 +1184,6 @@
                 getProtocolManager().validateTargetObjectInterfaces(this.ejbRemoteBusinessHome);
 
                 for (RemoteBusinessIntfInfo next : remoteBusinessIntfInfo.values()) {
-
-                    next.proxyClass = Proxy.getProxyClass(loader, new Class[] { next.generatedRemoteIntf });
-
-                    next.proxyCtor = next.proxyClass.getConstructor(new Class[] { InvocationHandler.class });
-
                     // Remotereference factory needs instances of
                     // Home and Remote to get repository Ids since it
                     // doesn't have stubs and ties.  This must be done before
@@ -1350,12 +1299,6 @@
                 this.ejbLocalHomeImpl = instantiateEJBLocalHomeImpl();
                 this.ejbLocalHome = ejbLocalHomeImpl.getEJBLocalHome();
 
-                // Since some containers might create multiple EJBLocalObjects
-                // for the same ejb, make sure we use the same Proxy class to
-                // instantiate all the proxy instances.
-                Class ejbLocalObjectProxyClass = Proxy.getProxyClass(loader, new Class[] { IndirectlySerializable.class, localIntf });
-                ejbLocalObjectProxyCtor = ejbLocalObjectProxyClass.getConstructor(new Class[] { InvocationHandler.class });
-
                 // Portable JNDI name for EJB 2.x LocalHome.  We don't provide a
                 // glassfish-specific way of accessing Local EJBs.
 
@@ -1368,24 +1311,20 @@
                 ejbLocalBusinessHomeImpl = instantiateEJBLocalBusinessHomeImpl();
                 ejbLocalBusinessHome = (GenericEJBLocalHome) ejbLocalBusinessHomeImpl.getEJBLocalHome();
 
-                Class[] proxyInterfaces = new Class[localBusinessIntfs.size() + 1];
-                proxyInterfaces[0] = IndirectlySerializable.class;
+                ejbLocalBusinessProxyInterfaces = new Class[localBusinessIntfs.size() + 1];
+                ejbLocalBusinessProxyInterfaces[0] = IndirectlySerializable.class;
                 int index = 1;
                 for (Class next : localBusinessIntfs) {
-                    proxyInterfaces[index] = next;
+                    ejbLocalBusinessProxyInterfaces[index] = next;
                     index++;
                 }
 
-                Class proxyClass = Proxy.getProxyClass(loader, proxyInterfaces);
-                ejbLocalBusinessObjectProxyCtor = proxyClass.getConstructor(new Class[] { InvocationHandler.class });
-
                 for (Class next : localBusinessIntfs) {
                     // Portable JNDI name for EJB 3.x Local business interface.
                     // We don't provide a glassfish-specific way of accessing Local EJBs.
                     JavaGlobalJndiNamingObjectProxy namingProxy = new JavaGlobalJndiNamingObjectProxy(this, next.getName());
                     intfsForPortableJndi.put(next.getName(), namingProxy);
                 }
-
             }
 
             if (hasOptionalLocalBusinessView) {
@@ -1394,14 +1333,12 @@
 
                 ejbOptionalLocalBusinessHome = (GenericEJBLocalHome) ejbOptionalLocalBusinessHomeImpl.getEJBLocalHome();
 
-                Class[] proxyInterfaces = new Class[2];
-                proxyInterfaces[0] = IndirectlySerializable.class;
+                ejbOptionalLocalBusinessHomeProxyInterfaces = new Class[2];
+                ejbOptionalLocalBusinessHomeProxyInterfaces[0] = IndirectlySerializable.class;
+
                 String optionalIntfName = EJBUtils.getGeneratedOptionalInterfaceName(ejbClass.getName());
-
-                proxyInterfaces[1] = ejbGeneratedOptionalLocalBusinessIntfClass = optIntfClassLoader.loadClass(optionalIntfName);
-
-                Class proxyClass = Proxy.getProxyClass(loader, proxyInterfaces);
-                ejbOptionalLocalBusinessObjectProxyCtor = proxyClass.getConstructor(new Class[] { InvocationHandler.class });
+                ejbGeneratedOptionalLocalBusinessIntfClass = optIntfClassLoader.loadClass(optionalIntfName);
+                ejbOptionalLocalBusinessHomeProxyInterfaces[1] = ejbGeneratedOptionalLocalBusinessIntfClass;
 
                 // Portable JNDI name for no-interface view.
                 // We don't provide a glassfish-specific way of accessing the
@@ -1837,7 +1774,7 @@
             }
 
         } catch (Exception ex) {
-            _logger.log(Level.FINE, "Exception while running pre-invoke : ejbName = [{0}]", logParams);
+            _logger.log(Level.FINE, "Exception while running pre-invoke : ejb: [{0}]", containerInfo);
             _logger.log(Level.FINE, "", ex);
 
             EJBException ejbEx;
@@ -2476,7 +2413,7 @@
                     // be released.
 
                 } catch (EJBException e) {
-                    _logger.log(Level.WARNING, CONTEXT_FAILURE_JACC, logParams[0]);
+                    _logger.log(Level.WARNING, CONTEXT_FAILURE_JACC, containerInfo);
                     _logger.log(Level.WARNING, "", e);
                 }
 
@@ -2999,7 +2936,7 @@
                 if (initMethod != null) {
                     invInfo.targetMethod1 = initMethod;
                 } else {
-                    Object[] params = { logParams[0], (isLocal ? "LocalHome" : "Home"), invInfo.method.toString() };
+                    Object[] params = { containerInfo, (isLocal ? "LocalHome" : "Home"), invInfo.method.toString() };
                     _logger.log(Level.WARNING, BEAN_CLASS_METHOD_NOT_FOUND, params);
                     // Treat this as a warning instead of a fatal error.
                     // That matches the behavior of the generated code.
@@ -3048,7 +2985,7 @@
             }
 
         } catch (NoSuchMethodException nsme) {
-            Object[] params = { logParams[0] + ":" + nsme.toString(), (isLocal ? "Local" : "Remote"), invInfo.method.toString() };
+            Object[] params = { containerInfo + ":" + nsme.toString(), (isLocal ? "Local" : "Remote"), invInfo.method.toString() };
             _logger.log(Level.WARNING, BEAN_CLASS_METHOD_NOT_FOUND, params);
             // Treat this as a warning instead of a fatal error.
             // That matches the behavior of the generated code.
@@ -3302,18 +3239,15 @@
     }
 
     private EJBHomeImpl instantiateEJBRemoteBusinessHomeImpl() throws Exception {
-
         EJBHomeInvocationHandler handler = getEJBHomeInvocationHandler(remoteBusinessHomeIntf);
         handler.setMethodMap(proxyInvocationInfoMap);
 
         EJBHomeImpl remoteBusinessHomeImpl = handler;
-
-        EJBHome ejbRemoteBusinessHomeProxy = (EJBHome) Proxy.newProxyInstance(loader, new Class[] { remoteBusinessHomeIntf }, handler);
-
+        EJBHome ejbRemoteBusinessHomeProxy = (EJBHome) Proxy.newProxyInstance(
+            loader, new Class[] {remoteBusinessHomeIntf}, handler);
         handler.setProxy(ejbRemoteBusinessHomeProxy);
 
         remoteBusinessHomeImpl.setContainer(this);
-
         return remoteBusinessHomeImpl;
 
     }
@@ -3406,7 +3340,8 @@
         localObjImpl = handler;
 
         try {
-            EJBLocalObject localObjectProxy = (EJBLocalObject) ejbLocalObjectProxyCtor.newInstance(new Object[] { handler });
+            EJBLocalObject localObjectProxy = (EJBLocalObject) Proxy.newProxyInstance(
+                loader, new Class[] {IndirectlySerializable.class, localIntf}, handler);
             handler.setProxy(localObjectProxy);
         } catch (ClassCastException e) {
             String msg = localStrings.getLocalString("ejb.basecontainer_invalid_local_interface",
@@ -3428,9 +3363,7 @@
         EJBLocalObjectInvocationHandler handler = new EJBLocalObjectInvocationHandler(proxyInvocationInfoMap, false);
 
         EJBLocalObjectImpl localBusinessObjImpl = handler;
-
-        ejbLocalBusinessObjectProxyCtor.newInstance(new Object[] { handler });
-
+        Proxy.newProxyInstance(loader, ejbLocalBusinessProxyInterfaces, handler);
         localBusinessObjImpl.setContainer(this);
 
         for (Class businessIntfClass : localBusinessIntfs) {
@@ -3445,17 +3378,15 @@
     protected EJBLocalObjectImpl instantiateOptionalEJBLocalBusinessObjectImpl() throws Exception {
 
         EJBLocalObjectInvocationHandler handler = new EJBLocalObjectInvocationHandler(proxyInvocationInfoMap, true);
-
         EJBLocalObjectImpl localBusinessObjImpl = handler;
-
-        ejbOptionalLocalBusinessObjectProxyCtor.newInstance(new Object[] { handler });
-
+        Proxy.newProxyInstance(loader, ejbOptionalLocalBusinessHomeProxyInterfaces, handler);
         localBusinessObjImpl.setContainer(this);
 
         Class businessIntfClass = ejbGeneratedOptionalLocalBusinessIntfClass;
-        EJBLocalObjectInvocationHandlerDelegate delegate = new EJBLocalObjectInvocationHandlerDelegate(businessIntfClass, getContainerId(),
-            handler);
-        Proxy proxy = (Proxy) Proxy.newProxyInstance(loader, new Class[] { IndirectlySerializable.class, businessIntfClass }, delegate);
+        EJBLocalObjectInvocationHandlerDelegate delegate = new EJBLocalObjectInvocationHandlerDelegate(
+            businessIntfClass, getContainerId(), handler);
+        Proxy proxy = (Proxy) Proxy.newProxyInstance(
+            loader, new Class[] {IndirectlySerializable.class, businessIntfClass}, delegate);
 
         String beanSubClassName = ejbGeneratedOptionalLocalBusinessIntfClass.getName() + "__Bean__";
 
@@ -3465,7 +3396,7 @@
         optIntfClassLoader.loadClass(ejbGeneratedOptionalLocalBusinessIntfClass.getName());
 
         Class subClass = optIntfClassLoader.loadClass(beanSubClassName);
-        OptionalLocalInterfaceProvider provider = (OptionalLocalInterfaceProvider) subClass.newInstance();
+        OptionalLocalInterfaceProvider provider = (OptionalLocalInterfaceProvider) subClass.getConstructor().newInstance();
         provider.setOptionalLocalIntfProxy(proxy);
         localBusinessObjImpl.mapClientObject(ejbClass.getName(), provider);
 
@@ -3481,7 +3412,8 @@
         EJBObjectImpl ejbObjImpl = handler;
 
         try {
-            EJBObject ejbObjectProxy = (EJBObject) ejbObjectProxyCtor.newInstance(new Object[] { handler });
+            EJBObject ejbObjectProxy = (EJBObject) Proxy.newProxyInstance(loader, new Class[] {remoteIntf}, handler);
+            this.ejbObjectProxyClass = ejbObjectProxyClass == null ? ejbObjectProxy.getClass() : ejbObjectProxyClass;
             handler.setEJBObject(ejbObjectProxy);
         } catch (ClassCastException e) {
             String msg = localStrings.getLocalString("ejb.basecontainer_invalid_remote_interface",
@@ -3519,11 +3451,10 @@
         for (RemoteBusinessIntfInfo next : remoteBusinessIntfInfo.values()) {
 
             EJBObjectInvocationHandlerDelegate delegate = new EJBObjectInvocationHandlerDelegate(next.remoteBusinessIntf, handler);
-
-            java.rmi.Remote ejbBusinessObjectProxy = (java.rmi.Remote) next.proxyCtor.newInstance(new Object[] { delegate });
-
+            Remote ejbBusinessObjectProxy = (Remote) Proxy.newProxyInstance(
+                loader, new Class[] {next.generatedRemoteIntf}, delegate);
+            next.proxyClass = ejbBusinessObjectProxy.getClass();
             ejbBusinessObjImpl.setEJBObject(next.generatedRemoteIntf.getName(), ejbBusinessObjectProxy);
-
         }
 
         ejbBusinessObjImpl.setContainer(this);
@@ -3935,7 +3866,9 @@
                         remoteHomeRefFactory.cleanupClass(homeIntf);
                         remoteHomeRefFactory.cleanupClass(remoteIntf);
                         remoteHomeRefFactory.cleanupClass(ejbHome.getClass());
-                        remoteHomeRefFactory.cleanupClass(ejbObjectProxyClass);
+                        if (ejbObjectProxyClass != null) {
+                            remoteHomeRefFactory.cleanupClass(ejbObjectProxyClass);
+                        }
 
                         // destroy the factory itself
                         remoteHomeRefFactory.destroy();
@@ -3956,7 +3889,9 @@
 
                             next.referenceFactory.cleanupClass(next.generatedRemoteIntf);
 
-                            next.referenceFactory.cleanupClass(next.proxyClass);
+                            if (next.proxyClass != null) {
+                                next.referenceFactory.cleanupClass(next.proxyClass);
+                            }
 
                             // destroy the factory itself
                             next.referenceFactory.destroy();
@@ -3965,7 +3900,7 @@
                     }
 
                 } catch (Exception ex) {
-                    _logger.log(Level.FINE, "Exception during undeploy", logParams);
+                    _logger.log(Level.FINE, "Exception during undeploy {0}", containerInfo);
                     _logger.log(Level.FINE, "", ex);
                 }
             }
@@ -3973,7 +3908,7 @@
             try {
                 ejbContainerUtilImpl.getComponentEnvManager().unbindFromComponentNamespace(ejbDescriptor);
             } catch (javax.naming.NamingException namEx) {
-                _logger.log(Level.FINE, "Exception during undeploy", logParams);
+                _logger.log(Level.FINE, "Exception during undeploy: {0}", containerInfo);
                 _logger.log(Level.FINE, "", namEx);
             }
 
@@ -4312,45 +4247,46 @@
     protected abstract EjbMonitoringStatsProvider getMonitoringStatsProvider(String appName, String modName, String ejbName);
 
     protected void createMonitoringRegistry() {
-        String appName = null;
-        String modName = null;
-        String ejbName = null;
         boolean isMonitorRegistryMediatorCreated = false;
         try {
-            appName = (ejbDescriptor.getApplication().isVirtual()) ? null : ejbDescriptor.getApplication().getRegistrationName();
-            if (appName == null) {
-                modName = ejbDescriptor.getApplication().getRegistrationName();
-            } else {
-                String archiveuri = ejbDescriptor.getEjbBundleDescriptor().getModuleDescriptor().getArchiveUri();
-                modName = com.sun.enterprise.util.io.FileUtils.makeFriendlyFilename(archiveuri);
-            }
-            ejbName = ejbDescriptor.getName();
-            containerInfo = new ContainerInfo(appName, modName, ejbName);
-
             isMonitorRegistryMediatorCreated = true;
-            registerEjbMonitoringProbeProvider(appName, modName, ejbName);
-            ejbProbeListener = getMonitoringStatsProvider(appName, modName, ejbName);
-            ejbProbeListener.addMethods(getContainerId(), appName, modName, ejbName, getMonitoringMethodsArray());
+            registerEjbMonitoringProbeProvider();
+            ejbProbeListener = getMonitoringStatsProvider(containerInfo.appName, containerInfo.modName, containerInfo.ejbName);
+            ejbProbeListener.addMethods(getContainerId(), containerInfo.appName, containerInfo.modName, containerInfo.ejbName, getMonitoringMethodsArray());
             ejbProbeListener.register();
 
             if (_logger.isLoggable(Level.FINE)) {
                 _logger.log(Level.FINE,
-                    "Created MonitoringRegistry: " + EjbMonitoringUtils.getDetailedLoggingName(appName, modName, ejbName));
+                    "Created MonitoringRegistry: " + EjbMonitoringUtils.getDetailedLoggingName(containerInfo.appName, containerInfo.modName, containerInfo.ejbName));
             }
         } catch (Exception ex) {
             _logger.log(Level.SEVERE, COULD_NOT_CREATE_MONITORREGISTRYMEDIATOR,
-                new Object[] { EjbMonitoringUtils.getDetailedLoggingName(appName, modName, ejbName), ex });
+                new Object[] { EjbMonitoringUtils.getDetailedLoggingName(containerInfo.appName, containerInfo.modName, containerInfo.ejbName), ex });
             if (!isMonitorRegistryMediatorCreated) {
-                registerEjbMonitoringProbeProvider(appName, modName, ejbName);
+                registerEjbMonitoringProbeProvider();
             }
         }
     }
 
-    private void registerEjbMonitoringProbeProvider(String appName, String modName, String ejbName) {
+    private static ContainerInfo createContainerInfo(final ContainerType type, final EjbDescriptor ejbDescriptor) {
+        final String appName = ejbDescriptor.getApplication().isVirtual() ? null
+            : ejbDescriptor.getApplication().getRegistrationName();
+        final String modName;
+        if (appName == null) {
+            modName = ejbDescriptor.getApplication().getRegistrationName();
+        } else {
+            String archiveuri = ejbDescriptor.getEjbBundleDescriptor().getModuleDescriptor().getArchiveUri();
+            modName = com.sun.enterprise.util.io.FileUtils.makeFriendlyFilename(archiveuri);
+        }
+        return new ContainerInfo(type, appName, modName, ejbDescriptor.getName());
+    }
+
+    private void registerEjbMonitoringProbeProvider() {
         // Always create to avoid NPE
         try {
             ProbeProviderFactory probeFactory = ejbContainerUtilImpl.getProbeProviderFactory();
-            String invokerId = EjbMonitoringUtils.getInvokerId(appName, modName, ejbName);
+            String invokerId = EjbMonitoringUtils.getInvokerId(
+                containerInfo.appName, containerInfo.modName, containerInfo.ejbName);
             ejbProbeNotifier = probeFactory.getProbeProvider(EjbMonitoringProbeProvider.class, invokerId);
             if (_logger.isLoggable(Level.FINE)) {
                 _logger.log(Level.FINE, "Got ProbeProvider: " + ejbProbeNotifier.getClass().getName());
@@ -4509,38 +4445,46 @@
     }
 
     /**
-     * PreInvokeException is used to wrap exceptions thrown from BaseContainer.preInvoke, so it indicates that the bean's method will
-     * not be called.
+     * PreInvokeException is used to wrap exceptions thrown from BaseContainer.preInvoke,
+     * so it indicates that the bean's method will not be called.
      */
     public final static class PreInvokeException extends EJBException {
-
         Exception exception;
 
         public PreInvokeException(Exception ex) {
             this.exception = ex;
         }
-    } //PreInvokeException{}
+    }
 
     /**
-     * Strings for monitoring info
+     * Informations about this container.
      */
     public static final class ContainerInfo {
-        public String appName;
-        public String modName;
-        public String ejbName;
+        public final String appName;
+        public final String modName;
+        public final String ejbName;
+        public final ContainerType type;
 
-        ContainerInfo(String appName, String modName, String ejbName) {
+        ContainerInfo(ContainerType type, String appName, String modName, String ejbName) {
+            this.type = type;
             this.appName = appName;
             this.modName = modName;
             this.ejbName = ejbName;
         }
-    } //ContainerInfo
+
+        @Override
+        public String toString() {
+            return new StringBuilder(64).append(appName).append('_').append(this.modName).append('_')
+                .append(this.ejbName).append('(').append(this.type).append(')').toString();
+        }
+    }
 
     private static class BeanContext {
         ClassLoader previousClassLoader;
         boolean classLoaderSwitched;
     }
-} //BaseContainer{}
+
+} // BaseContainer class
 
 final class CallFlowInfoImpl implements CallFlowInfo {
 
@@ -4621,14 +4565,11 @@
 }
 
 final class RemoteBusinessIntfInfo {
-
     Class generatedRemoteIntf;
     Class remoteBusinessIntf;
     String jndiName;
     RemoteReferenceFactory referenceFactory;
     Class proxyClass;
-    Constructor proxyCtor;
-
 }
 
 final class SafeProperties extends Properties {
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/EJBHomeImpl.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/EJBHomeImpl.java
index f17efe9..8efa71d 100644
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/EJBHomeImpl.java
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/EJBHomeImpl.java
@@ -107,6 +107,7 @@
      * This is the implementation of the jakarta.ejb.EJBHome remove method.
      * @exception RemoveException on error during removal
      */
+    @Override
     public final void remove(Handle handle)
         throws RemoteException, RemoveException
     {
@@ -130,10 +131,11 @@
      * This is the implementation of the jakarta.ejb.EJBHome remove method.
      * @exception RemoveException on error during removal
      */
+    @Override
     public final void remove(Object primaryKey)
         throws RemoteException, RemoveException
     {
-        if (container.getContainerType() != BaseContainer.ContainerType.ENTITY) {
+        if (container.getContainerInfo().type != BaseContainer.ContainerType.ENTITY) {
             // Session beans dont have primary keys. EJB2.0 Section 6.6
             throw new RemoveException("Invalid remove operation.");
         }
@@ -155,6 +157,7 @@
     /**
      * This is the implementation of the jakarta.ejb.EJBHome method.
      */
+    @Override
     public final EJBMetaData getEJBMetaData()
         throws RemoteException
     {
@@ -167,6 +170,7 @@
      * This is the implementation of the jakarta.ejb.EJBHome getHomeHandle
      * method.
      */
+    @Override
     public final HomeHandle getHomeHandle()
         throws RemoteException
     {
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/EJBHomeInvocationHandler.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/EJBHomeInvocationHandler.java
index ecc02f5..918f301 100644
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/EJBHomeInvocationHandler.java
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/EJBHomeInvocationHandler.java
@@ -56,7 +56,7 @@
     // but only has InvocationHandler.
     private EJBHome proxy_;
 
-    private Class homeIntfClass_;
+    private final Class homeIntfClass_;
 
     // Cache reference to invocation info.  There is one of these per
     // container.  It's populated during container initialization and
@@ -65,7 +65,7 @@
     // is created.
     private MethodMap invocationInfoMap_;
 
-    private EjbContainerUtil ejbContainerUtil = EjbContainerUtilImpl.getInstance();
+    private final EjbContainerUtil ejbContainerUtil = EjbContainerUtilImpl.getInstance();
 
 
     protected EJBHomeInvocationHandler(EjbDescriptor ejbDescriptor,
@@ -93,6 +93,7 @@
         invocationInfoMap_ = map;
     }
 
+    @Override
     protected EJBHome getEJBHome() {
         return proxy_;
     }
@@ -100,6 +101,7 @@
     /**
      * Called by EJBHome proxy.
      */
+    @Override
     public Object invoke(Object proxy, Method method, Object[] args)
         throws Throwable {
 
@@ -119,17 +121,14 @@
             // proceeding. Otherwise, the context classloader could still
             // reflect the caller's class loader.
 
-            if( Thread.currentThread().getContextClassLoader() !=
-                getContainer().getClassLoader() ) {
-                originalClassLoader = Utility.setContextClassLoader
-                    (getContainer().getClassLoader());
+            if (Thread.currentThread().getContextClassLoader() != getContainer().getClassLoader()) {
+                originalClassLoader = Utility.setContextClassLoader(getContainer().getClassLoader());
             }
 
             Class methodClass = method.getDeclaringClass();
 
-            if( methodClass == java.lang.Object.class )  {
-                return InvocationHandlerUtil.invokeJavaObjectMethod
-                    (this, method, args);
+            if (methodClass == java.lang.Object.class) {
+                return InvocationHandlerUtil.invokeJavaObjectMethod(this, method, args);
             } else if (invokeSpecialEJBHomeMethod(method, methodClass, args)) {
                 return null;
             }
@@ -236,7 +235,7 @@
                 inv.invocationInfo = invInfo;
 
                 if( ejbObjectImpl != null && invInfo.startsWithCreate ) {
-                    inv.ejbObject = (EJBLocalRemoteObject) ejbObjectImpl;
+                    inv.ejbObject = ejbObjectImpl;
                 }
 
                 BaseContainer container = (BaseContainer) getContainer();
@@ -335,24 +334,24 @@
         try {
             if( methodName.equals("getEJBMetaData") ) {
 
-                methodIndex = container.EJBHome_getEJBMetaData;
+                methodIndex = BaseContainer.EJBHome_getEJBMetaData;
                 container.onEjbMethodStart(methodIndex);
                 returnValue = super.getEJBMetaData();
 
             } else if( methodName.equals("getHomeHandle") ) {
 
-                methodIndex = container.EJBHome_getHomeHandle;
+                methodIndex = BaseContainer.EJBHome_getHomeHandle;
                 container.onEjbMethodStart(methodIndex);
                 returnValue = super.getHomeHandle();
 
             } else if( methodName.equals("remove") ) {
 
                 if( args[0] instanceof jakarta.ejb.Handle ) {
-                    methodIndex = container.EJBHome_remove_Handle;
+                    methodIndex = BaseContainer.EJBHome_remove_Handle;
                     container.onEjbMethodStart(methodIndex);
                     super.remove((jakarta.ejb.Handle)args[0]);
                 } else {
-                    methodIndex = container.EJBHome_remove_Pkey;
+                    methodIndex = BaseContainer.EJBHome_remove_Pkey;
                     container.onEjbMethodStart(methodIndex);
                     super.remove(args[0]);
                 }
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/EJBLocalHomeImpl.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/EJBLocalHomeImpl.java
index 905cab1..071912a 100644
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/EJBLocalHomeImpl.java
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/EJBLocalHomeImpl.java
@@ -95,10 +95,11 @@
     /**
      * This is the implementation of the jakarta.ejb.EJBLocalHome remove method.
      */
+    @Override
     public final void remove(Object primaryKey)
         throws RemoveException, EJBException
     {
-        if (container.getContainerType() != BaseContainer.ContainerType.ENTITY) {
+        if (container.getContainerInfo().type != BaseContainer.ContainerType.ENTITY) {
             // Session beans dont have primary keys. EJB2.0 Section 6.6.
             throw new RemoveException("Attempt to call remove(Object primaryKey) on a session bean.");
         }
@@ -119,12 +120,11 @@
             // This should never be thrown for local invocations, but it's
             // part of the removeBean signature.  If for some strange
             // reason it happens, convert to EJBException
-            EJBException ejbEx =new EJBException("unexpected RemoteException");
-            ejbEx.initCause(re);
-            throw ejbEx;
+            throw new EJBException("unexpected RemoteException", re);
         }
     }
 
+    @Override
     public SerializableObjectFactory getSerializableObjectFactory() {
         return new SerializableLocalHome(
             container.getEjbDescriptor().getUniqueId());
@@ -133,12 +133,13 @@
     public static final class SerializableLocalHome
         implements SerializableObjectFactory
     {
-        private long ejbId;
+        private final long ejbId;
 
         public SerializableLocalHome(long uniqueId) {
             this.ejbId = uniqueId;
         }
 
+        @Override
         public Object createObject()
             throws IOException
         {
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/EjbEndpointFacadeImpl.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/EjbEndpointFacadeImpl.java
index 271d11f..274480b 100644
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/EjbEndpointFacadeImpl.java
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/EjbEndpointFacadeImpl.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 1997, 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
@@ -30,30 +31,36 @@
 import java.util.logging.Logger;
 
 
-/*
+/**
+ * A facade for container services to be used by web services runtime.
+ *
  * @author Kenneth Saks
  */
-
 public class EjbEndpointFacadeImpl implements EjbEndpointFacade {
 
-    private BaseContainer container_;
-    private InvocationManager invManager_;
-    private static Logger logger_ = EjbContainerUtilImpl.getLogger();
+    private static final Logger LOG = EjbContainerUtilImpl.getLogger();
+    private final BaseContainer container;
+    private final InvocationManager invocationManager;
 
-
+    /**
+     * Creates a facade for container services to be used by web services runtime.
+     *
+     * @param container
+     * @param util
+     */
     public EjbEndpointFacadeImpl(BaseContainer container, EjbContainerUtil util) {
-        container_ = container;
-        invManager_ = util.getInvocationManager();
+        this.container = container;
+        this.invocationManager = util.getInvocationManager();
     }
 
 
+    @Override
     public ClassLoader getEndpointClassLoader() {
-
-        return container_.getClassLoader();
-
+        return container.getClassLoader();
     }
 
 
+    @Override
     public ComponentInvocation startInvocation() {
 
         // We need to split the preInvoke tasks into stages since handlers
@@ -61,29 +68,23 @@
         // place before handlers are run.  Note that the application
         // classloader was set much earlier when the invocation first arrived
         // so we don't need to set it here.
-        EjbInvocation inv = container_.createEjbInvocation();
+        EjbInvocation inv = container.createEjbInvocation();
 
         // Do the portions of preInvoke that don't need a Method object.
         inv.isWebService = true;
-        inv.container = container_;
+        inv.container = container;
         inv.transactionAttribute = Container.TX_NOT_INITIALIZED;
 
-        // AS per latest spec change, the MessageContext object in WebSvcCtxt
-        // should be the same one as used in the ejb's interceptors'
-        // TODO
-        // inv.setContextData(wsCtxt);
-
         // In all cases, the WebServiceInvocationHandler will do the
         // remaining preInvoke tasks : getContext, preInvokeTx, etc.
-        invManager_.preInvoke(inv);
-
+        invocationManager.preInvoke(inv);
         return inv;
 
     }
 
 
+    @Override
     public void endInvocation(ComponentInvocation inv) {
-
         try {
             EjbInvocation ejbInv = (EjbInvocation) inv;
 
@@ -96,19 +97,13 @@
             // and WebServiceInvocationHandler rather than change the
             // behavior of BaseContainer.preInvoke and
             // BaseContainer.postInvoke.
-
-
-            if( ejbInv.ejb != null ) {
-                container_.webServicePostInvoke(ejbInv);
+            if (ejbInv.ejb == null) {
+                invocationManager.postInvoke(inv);
             } else {
-                invManager_.postInvoke(inv);
+                container.webServicePostInvoke(ejbInv);
             }
-
-        } catch(Throwable t) {
-            logger_.log(Level.WARNING,
-                       "Unexpected error in EJB WebService endpoint post processing", t);
+        } catch (Throwable t) {
+            LOG.log(Level.WARNING, "Unexpected error in EJB WebService endpoint post processing", t);
         }
-
     }
-
 }
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/RemoteBusinessObjectFactory.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/RemoteBusinessObjectFactory.java
index 1a12569..e353d03 100644
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/RemoteBusinessObjectFactory.java
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/RemoteBusinessObjectFactory.java
@@ -30,26 +30,13 @@
 
 public class RemoteBusinessObjectFactory implements ObjectFactory {
 
-
-
-    public Object getObjectInstance(Object obj,
-                    Name name,
-                    Context nameCtx,
-                    Hashtable env) throws Exception
-    {
-
-    InitialContext ic = new InitialContext(env);
-
-    Reference ref = (Reference) obj;
-
-    RefAddr refAddr = ref.get("url");
-
-    Object genericRemoteHomeObj = ic.lookup((String) refAddr.getContent());
-
-    String busInterface = ref.getClassName();
-
-    return EJBUtils.lookupRemote30BusinessObject(genericRemoteHomeObj,
-                                                     busInterface);
+    @Override
+    public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable env) throws Exception {
+        InitialContext ic = new InitialContext(env);
+        Reference ref = (Reference) obj;
+        RefAddr refAddr = ref.get("url");
+        Object genericRemoteHomeObj = ic.lookup((String) refAddr.getContent());
+        String busInterface = ref.getClassName();
+        return EJBUtils.lookupRemote30BusinessObject(genericRemoteHomeObj, busInterface);
     }
-
 }
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/RemoteBusinessWrapperBase.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/RemoteBusinessWrapperBase.java
index df70245..fe6c8bc 100644
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/RemoteBusinessWrapperBase.java
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/RemoteBusinessWrapperBase.java
@@ -25,10 +25,9 @@
 
 import com.sun.ejb.EJBUtils;
 
-public class RemoteBusinessWrapperBase
-    implements java.io.Serializable {
+public class RemoteBusinessWrapperBase implements java.io.Serializable {
 
-    // This is the name of the developer-written business interface.
+    /** This is the name of the developer-written business interface. */
     private String businessInterface_;
 
     private Remote stub_;
@@ -41,16 +40,20 @@
         this.hashCode_ = busIntf.hashCode();
     }
 
+
     public Remote getStub() {
         return stub_;
     }
 
+
+    @Override
     public int hashCode() {
         return hashCode_;
     }
 
-    public boolean equals(Object obj) {
 
+    @Override
+    public boolean equals(Object obj) {
         boolean result = (obj == this); //Most efficient
         if ((result == false) && (obj != null)) { //Do elaborate checks
             if (obj instanceof RemoteBusinessWrapperBase) {
@@ -70,59 +73,45 @@
         return result;
     }
 
+
     public String getBusinessInterfaceName() {
         return businessInterface_;
     }
 
+
     public Object writeReplace() throws ObjectStreamException {
         return new RemoteBusinessWrapperBase(stub_, businessInterface_);
     }
 
-    private void writeObject(java.io.ObjectOutputStream oos)
-        throws java.io.IOException
-    {
 
+    private void writeObject(java.io.ObjectOutputStream oos) throws java.io.IOException {
         oos.writeObject(businessInterface_);
         oos.writeObject(stub_);
-
     }
 
-    private void readObject(ObjectInputStream ois)
-        throws IOException, ClassNotFoundException {
 
+    private void readObject(ObjectInputStream ois) throws IOException {
         try {
-
             businessInterface_ = (String) ois.readObject();
             hashCode_ = businessInterface_.hashCode();
 
             EJBUtils.loadGeneratedRemoteBusinessClasses(businessInterface_);
 
             stub_ = (Remote) ois.readObject();
-
-        } catch(Exception e) {
-            IOException ioe = new IOException("RemoteBusinessWrapper.readObj "
-                                              + " error");
-            ioe.initCause(e);
-            throw ioe;
+        } catch (Exception e) {
+            throw new IOException("RemoteBusinessWrapper.readObj error", e);
         }
     }
 
+
     public Object readResolve() throws ObjectStreamException {
-
         try {
-
-            return EJBUtils.createRemoteBusinessObject(businessInterface_,
-                                                       stub_);
-        } catch(Exception e) {
-            WriteAbortedException wae = new WriteAbortedException
-                ("RemoteBusinessWrapper.readResolve error", e);
+            return EJBUtils.createRemoteBusinessObject(businessInterface_, stub_);
+        } catch (Exception e) {
+            WriteAbortedException wae = new WriteAbortedException("RemoteBusinessWrapper.readResolve error", e);
             throw wae;
         }
 
     }
-
-
-
-
 }
 
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/StatefulSessionContainer.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/StatefulSessionContainer.java
index 8927b90..5000e92 100644
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/StatefulSessionContainer.java
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/StatefulSessionContainer.java
@@ -263,8 +263,8 @@
     private final static long CONCURRENCY_NOT_ALLOWED = 0;
     private final static long BLOCK_INDEFINITELY = -1;
 
-    private ArrayList passivationCandidates = new ArrayList();
-    private Object asyncTaskSemaphore = new Object();
+    private final ArrayList passivationCandidates = new ArrayList();
+    private final Object asyncTaskSemaphore = new Object();
 
 
     private int asyncTaskCount = 0;
@@ -278,21 +278,21 @@
     private LruSessionCache sessionBeanCache;
     private BackingStore<Serializable, SimpleMetadata> backingStore;
     private SFSBUUIDUtil uuidGenerator;
-    private ArrayList scheduledTimerTasks = new ArrayList();
+    private final ArrayList scheduledTimerTasks = new ArrayList();
 
     private int statMethodReadyCount = 0;
 
-    private Level TRACE_LEVEL = Level.FINE;
+    private final Level TRACE_LEVEL = Level.FINE;
 
-    private String ejbName;
+    private final String ejbName;
 
     private boolean isHAEnabled;
     private int removalGracePeriodInSeconds;
 
-    private InvocationInfo postConstructInvInfo;
-    private InvocationInfo preDestroyInvInfo;
-    private InvocationInfo postActivateInvInfo;
-    private InvocationInfo prePassivateInvInfo;
+    private final InvocationInfo postConstructInvInfo;
+    private final InvocationInfo preDestroyInvInfo;
+    private final InvocationInfo postActivateInvInfo;
+    private final InvocationInfo prePassivateInvInfo;
 
     private StatefulSessionStoreMonitor sfsbStoreMonitor;
 
@@ -303,7 +303,7 @@
     private Method afterBeginMethod;
     private Method beforeCompletionMethod;
     private Method afterCompletionMethod;
-    private boolean isPassivationCapable;
+    private final boolean isPassivationCapable;
 
     /*
      * Cache for keeping ref count for shared extended entity manager.
@@ -311,10 +311,10 @@
      */
 
     private static final Map<EntityManager, EEMRefInfo> extendedEMReferenceCountMap
-            = new HashMap<EntityManager, EEMRefInfo>();
+            = new HashMap<>();
 
     private static final Map<EEMRefInfoKey, EntityManager> eemKey2EEMMap
-            = new HashMap<EEMRefInfoKey, EntityManager>();
+            = new HashMap<>();
 
     /**
      * This constructor is called from the JarManager when a Jar is deployed.
@@ -346,6 +346,7 @@
         isPassivationCapable = sfulDesc.isPassivationCapable();
     }
 
+    @Override
     public boolean isPassivationCapable() {
         return isPassivationCapable;
     }
@@ -361,6 +362,7 @@
         return inv;
     }
 
+    @Override
     protected void initializeHome()
             throws Exception {
         super.initializeHome();
@@ -427,6 +429,7 @@
 
         java.security.AccessController.doPrivileged(
             new java.security.PrivilegedExceptionAction() {
+                @Override
                 public java.lang.Object run() throws Exception {
                     if( !methodAccessible.isAccessible() ) {
                         methodAccessible.setAccessible(true);
@@ -439,6 +442,7 @@
 
     // Called before invoking a bean with no Tx or with a new Tx.
     // Check if the bean is associated with an unfinished tx.
+    @Override
     protected void checkUnfinishedTx(Transaction prevTx, EjbInvocation inv) {
         try {
             if ( inv.invocationInfo.isBusinessMethod && prevTx != null &&
@@ -488,6 +492,7 @@
         }
     }
 
+    @Override
     protected void registerMonitorableComponents() {
         registerEjbCacheProbeProvider();
         super.registerMonitorableComponents();
@@ -552,6 +557,7 @@
         return sbuf.toString();
     }
 
+    @Override
     protected EjbMonitoringStatsProvider getMonitoringStatsProvider(
             String appName, String modName, String ejbName) {
         StatefulSessionBeanStatsProvider statsProvider = new StatefulSessionBeanStatsProvider(
@@ -578,7 +584,7 @@
     }
 **/
 
-    private static final String convertCtxStateToString(
+    private static String convertCtxStateToString(
             SessionContextImpl sc) {
         switch (sc.getState()) {
             case PASSIVATED:
@@ -595,18 +601,20 @@
         return "UNKNOWN-STATE";
     }
 
+    @Override
     protected boolean isIdentical(EJBObjectImpl ejbo, EJBObject other)
             throws RemoteException {
 
-        if (other == ejbo.getStub())
+        if (other == ejbo.getStub()) {
             return true;
-        else {
+        } else {
             try {
                 // other may be a stub for a remote object.
-                if (getProtocolManager().isIdentical(ejbo.getStub(), other))
+                if (getProtocolManager().isIdentical(ejbo.getStub(), other)) {
                     return true;
-                else
+                } else {
                     return false;
+                }
             } catch (Exception ex) {
                 _logger.log(Level.FINE,
                         "Exception while getting stub for ejb", ex);
@@ -622,6 +630,7 @@
      * ejbCreate on the new bean after createEJBObject() returns.
      * Return the EJBObject for the bean.
      */
+    @Override
     protected EJBObjectImpl createEJBObjectImpl()
             throws CreateException, RemoteException {
         try {
@@ -634,9 +643,9 @@
 
             _logger.log(Level.WARNING, CREATE_EJBOBJECT_EXCEPTION, new Object[]{ejbDescriptor.getName(), ex});
 
-            if (ex instanceof EJBException)
+            if (ex instanceof EJBException) {
                 throw (EJBException) ex;
-            else {
+            } else {
                 CreateException ce =
                         new CreateException("ERROR creating stateful SessionBean");
                 ce.initCause(ex);
@@ -645,6 +654,7 @@
         }
     }
 
+    @Override
     protected EJBObjectImpl createRemoteBusinessObjectImpl()
             throws CreateException, RemoteException {
         try {
@@ -658,9 +668,9 @@
 
             _logger.log(Level.WARNING, CREATE_EJBOBJECT_EXCEPTION, new Object[]{ejbDescriptor.getName(), ex});
 
-            if (ex instanceof EJBException)
+            if (ex instanceof EJBException) {
                 throw (EJBException) ex;
-            else {
+            } else {
                 CreateException ce =
                         new CreateException("ERROR creating stateful SessionBean");
                 ce.initCause(ex);
@@ -677,6 +687,7 @@
      * ejbCreate on the new bean after createEJBLocalObjectImpl() returns.
      * Return the EJBLocalObject for the bean.
      */
+    @Override
     protected EJBLocalObjectImpl createEJBLocalObjectImpl()
             throws CreateException {
         try {
@@ -693,9 +704,9 @@
 
             _logger.log(Level.WARNING, CREATE_EJBLOCALOBJECT_EXCEPTION, new Object[]{ejbDescriptor.getName(), ex});
 
-            if (ex instanceof EJBException)
+            if (ex instanceof EJBException) {
                 throw (EJBException) ex;
-            else {
+            } else {
                 CreateException ce =
                         new CreateException("ERROR creating stateful SessionBean");
                 ce.initCause(ex);
@@ -707,6 +718,7 @@
     /**
      * Internal creation event for Local Business view of SFSB
      */
+    @Override
     EJBLocalObjectImpl createEJBLocalBusinessObjectImpl(boolean localBeanView)
             throws CreateException {
         try {
@@ -830,7 +842,7 @@
         Set<EntityManagerReferenceDescriptor> emRefs
                 = ejbDescriptor.getEntityManagerReferenceDescriptors();
         Iterator<EntityManagerReferenceDescriptor> iter = emRefs.iterator();
-        Set<EEMRefInfo> eemRefInfos = new HashSet<EEMRefInfo>();
+        Set<EEMRefInfo> eemRefInfos = new HashSet<>();
         while (iter.hasNext()) {
             EntityManagerReferenceDescriptor refDesc = iter.next();
             if (refDesc.getPersistenceContextType() ==
@@ -898,8 +910,7 @@
     private PhysicalEntityManagerWrapper findExtendedEMFromInvList(EntityManagerFactory emf) {
         PhysicalEntityManagerWrapper em = null;
 
-        ComponentInvocation compInv = (ComponentInvocation)
-                invocationManager.getCurrentInvocation();
+        ComponentInvocation compInv = invocationManager.getCurrentInvocation();
         if (compInv != null) {
             if (compInv.getInvocationType() == ComponentInvocation.ComponentInvocationType.EJB_INVOCATION) {
                 EjbInvocation ejbInv = (EjbInvocation) compInv;
@@ -915,6 +926,7 @@
         return em;
     }
 
+    @Override
     public EntityManager lookupExtendedEntityManager(EntityManagerFactory emf) {
         PhysicalEntityManagerWrapper physicalEntityManagerWrapper = findExtendedEMFromInvList(emf);
         return physicalEntityManagerWrapper == null ? null : physicalEntityManagerWrapper.getEM();
@@ -976,8 +988,9 @@
     // called from createEJBObject and activateEJB and createEJBLocalObjectImpl
     private EJBLocalObjectImpl createEJBLocalObjectImpl
             (SessionContextImpl context) throws Exception {
-        if (context.getEJBLocalObjectImpl() != null)
+        if (context.getEJBLocalObjectImpl() != null) {
             return context.getEJBLocalObjectImpl();
+        }
 
         // create EJBLocalObject
         EJBLocalObjectImpl localObjImpl = instantiateEJBLocalObjectImpl(context.getInstanceKey());
@@ -1007,8 +1020,9 @@
 
     private EJBLocalObjectImpl createEJBLocalBusinessObjectImpl
             (SessionContextImpl context) throws Exception {
-        if (context.getEJBLocalBusinessObjectImpl() != null)
+        if (context.getEJBLocalBusinessObjectImpl() != null) {
             return context.getEJBLocalBusinessObjectImpl();
+        }
 
         EJBLocalObjectImpl localBusinessObjImpl =
                 instantiateEJBLocalBusinessObjectImpl();
@@ -1038,8 +1052,9 @@
 
     private EJBLocalObjectImpl createOptionalEJBLocalBusinessObjectImpl
             (SessionContextImpl context) throws Exception {
-        if (context.getOptionalEJBLocalBusinessObjectImpl() != null)
+        if (context.getOptionalEJBLocalBusinessObjectImpl() != null) {
             return context.getOptionalEJBLocalBusinessObjectImpl();
+        }
 
         EJBLocalObjectImpl optionalLocalBusinessObjImpl =
                 instantiateOptionalEJBLocalBusinessObjectImpl();
@@ -1071,8 +1086,9 @@
     private EJBObjectImpl createEJBObjectImpl(SessionContextImpl context)
             throws Exception {
 
-        if (context.getEJBObjectImpl() != null)
+        if (context.getEJBObjectImpl() != null) {
             return context.getEJBObjectImpl();
+        }
 
         // create EJBObject and associate it with the key
         Object sessionKey = context.getInstanceKey();
@@ -1115,8 +1131,9 @@
     private EJBObjectImpl createRemoteBusinessObjectImpl
             (SessionContextImpl context) throws Exception {
 
-        if (context.getEJBRemoteBusinessObjectImpl() != null)
+        if (context.getEJBRemoteBusinessObjectImpl() != null) {
             return context.getEJBRemoteBusinessObjectImpl();
+        }
 
         // create EJBObject
         EJBObjectImpl ejbBusinessObjImpl =
@@ -1163,6 +1180,7 @@
 
     // Called from EJBObjectImpl.remove, EJBLocalObjectImpl.remove,
     // EJBHomeImpl.remove(Handle).
+    @Override
     protected void removeBean(EJBLocalRemoteObject ejbo, Method removeMethod,
                     boolean local)
             throws RemoveException, EJBException {
@@ -1273,12 +1291,14 @@
      * Note: EJB2.0 section 18.3.1 says that discarding an EJB
      * means that no methods other than finalize() should be invoked on it.
      */
+    @Override
     protected void forceDestroyBean(EJBContextImpl ctx) {
         SessionContextImpl sc = (SessionContextImpl) ctx;
 
         synchronized (sc) {
-            if (sc.getState() == EJBContextImpl.BeanState.DESTROYED)
+            if (sc.getState() == EJBContextImpl.BeanState.DESTROYED) {
                 return;
+            }
 
             // mark context as destroyed so no more invocations happen on it
             sc.setState(BeanState.DESTROYED);
@@ -1349,7 +1369,7 @@
                     // disconnect the EJBLocalObject from the context
                     // and vice versa
                     EJBLocalObjectImpl localObjImpl =
-                            (EJBLocalObjectImpl) sc.getEJBLocalObjectImpl();
+                            sc.getEJBLocalObjectImpl();
                     localObjImpl.clearContext();
                     localObjImpl.setRemoved(true);
                     sc.setEJBLocalObjectImpl(null);
@@ -1358,14 +1378,14 @@
                     // disconnect the EJBLocalObject from the context
                     // and vice versa
                     EJBLocalObjectImpl localBusinessObjImpl =
-                            (EJBLocalObjectImpl) sc.getEJBLocalBusinessObjectImpl();
+                            sc.getEJBLocalBusinessObjectImpl();
                     localBusinessObjImpl.clearContext();
                     localBusinessObjImpl.setRemoved(true);
                     sc.setEJBLocalBusinessObjectImpl(null);
                 }
                 if (hasOptionalLocalBusinessView) {
                     EJBLocalObjectImpl optionalLocalBusinessObjImpl =
-                            (EJBLocalObjectImpl) sc.getOptionalEJBLocalBusinessObjectImpl();
+                            sc.getOptionalEJBLocalBusinessObjectImpl();
                     optionalLocalBusinessObjImpl.clearContext();
                     optionalLocalBusinessObjImpl.setRemoved(true);
                     sc.setOptionalEJBLocalBusinessObjectImpl(null);
@@ -1411,6 +1431,7 @@
         }
     }
 
+    @Override
     public boolean userTransactionMethodsAllowed(ComponentInvocation inv) {
         boolean utMethodsAllowed = false;
 
@@ -1494,11 +1515,13 @@
     }
 
 
+    @Override
     protected EJBObjectImpl getEJBObjectImpl(byte[] instanceKey) {
         SessionContextImpl sc = _getContextForInstance(instanceKey);
         return sc.getEJBObjectImpl();
     }
 
+    @Override
     EJBObjectImpl getEJBRemoteBusinessObjectImpl(byte[] instanceKey) {
         SessionContextImpl sc = _getContextForInstance(instanceKey);
         return sc.getEJBRemoteBusinessObjectImpl();
@@ -1508,6 +1531,7 @@
      * Called from EJBLocalObjectImpl.getLocalObject() while deserializing
      * a local object reference.
      */
+    @Override
     protected EJBLocalObjectImpl getEJBLocalObjectImpl(Object sessionKey) {
 
         // Create an EJBLocalObject reference which
@@ -1532,6 +1556,7 @@
         return localObjImpl;
     }
 
+    @Override
     EJBLocalObjectImpl getEJBLocalBusinessObjectImpl(Object sessionKey) {
 
         // Create an EJBLocalObject reference which
@@ -1559,6 +1584,7 @@
         return localBusinessObjImpl;
     }
 
+    @Override
     EJBLocalObjectImpl getOptionalEJBLocalBusinessObjectImpl(Object sessionKey) {
 
         // Create an EJBLocalObject reference which
@@ -1591,17 +1617,19 @@
      *
      * @throws NoSuchObjectLocalException if the object has been removed.
      */
+    @Override
     protected void checkExists(EJBLocalRemoteObject ejbObj) {
-        if (ejbObj.isRemoved())
+        if (ejbObj.isRemoved()) {
             throw new NoSuchObjectLocalException("Bean has been removed");
+        }
     }
 
-    private final void logTraceInfo(EjbInvocation inv, Object key, String message) {
+    private void logTraceInfo(EjbInvocation inv, Object key, String message) {
         _logger.log(TRACE_LEVEL, traceInfoPrefix + message
                 + " for " + inv.method.getName() + "; key: " + key);
     }
 
-    private final void logTraceInfo(SessionContextImpl sc, String message) {
+    private void logTraceInfo(SessionContextImpl sc, String message) {
         _logger.log(TRACE_LEVEL, traceInfoPrefix + message
                 + " for key: " + sc.getInstanceKey()
                 + "; " + System.identityHashCode(sc));
@@ -1611,6 +1639,7 @@
      * Called from preInvoke which is called from the EJBObject
      * for local and remote invocations.
      */
+    @Override
     public ComponentContext _getContext(EjbInvocation inv) {
         EJBLocalRemoteObject ejbo = inv.ejbObject;
         SessionContextImpl sc = ejbo.getContext();
@@ -1756,6 +1785,7 @@
         return context;
     }
 
+    @Override
     public boolean isHAEnabled() {
         return isHAEnabled;
     }
@@ -1772,7 +1802,7 @@
 
         if (ejbLRO != null) {
             if (clientVersion ==
-                    sfsbVersionManager.NO_VERSION) {
+                    SFSBVersionManager.NO_VERSION) {
                 clientVersion = ejbLRO.getSfsbClientVersion();
             }
 
@@ -1825,6 +1855,7 @@
         }
     }
 
+    @Override
     protected void postInvokeTx(EjbInvocation inv) throws Exception {
 
         // Intercept postInvokeTx call to perform any @Remove logic
@@ -1884,6 +1915,7 @@
      * Called from preInvoke which is called from the EJBObject for local and
      * remote invocations.
      */
+    @Override
     public void releaseContext(EjbInvocation inv) {
         SessionContextImpl sc = (SessionContextImpl) inv.context;
 
@@ -1891,8 +1923,9 @@
         // any instance lock is released in the finally block.
         try {
             // check if the bean was destroyed
-            if (sc.getState() == BeanState.DESTROYED)
+            if (sc.getState() == BeanState.DESTROYED) {
                 return;
+            }
 
             // we're sure that no concurrent thread can be using this
             // context, so no need to synchronize.
@@ -1984,6 +2017,7 @@
 
     }
 
+    @Override
     protected void afterBegin(EJBContextImpl context) {
         // TX_BEAN_MANAGED EJBs cannot implement SessionSynchronization
         // Do not call afterBegin if it is a transactional lifecycle callback
@@ -2025,6 +2059,7 @@
     }
 
 
+    @Override
     protected void beforeCompletion(EJBContextImpl context) {
         // SessionSync calls on TX_BEAN_MANAGED SessionBeans
         // are not allowed
@@ -2067,6 +2102,7 @@
     // Called from SyncImpl.afterCompletion
     // May be called asynchronously during tx timeout
     // or on the same thread as tx.commit
+    @Override
     protected void afterCompletion(EJBContextImpl context, int status) {
         if (context.getState() == BeanState.DESTROYED) {
             return;
@@ -2237,13 +2273,14 @@
         }
     }
 
-    public final boolean canPassivateEJB(ComponentContext context) {
+    public boolean canPassivateEJB(ComponentContext context) {
         SessionContextImpl sc = (SessionContextImpl) context;
         return (sc.getState() == BeanState.READY);
     }
 
     // called asynchronously from the Recycler
-    public final boolean passivateEJB(ComponentContext context) {
+    @Override
+    public boolean passivateEJB(ComponentContext context) {
 
         SessionContextImpl sc = (SessionContextImpl) context;
 
@@ -2258,8 +2295,9 @@
                 }
             }
 
-            if (sc.getState() == BeanState.DESTROYED)
+            if (sc.getState() == BeanState.DESTROYED) {
                 return false;
+            }
 
             if (_logger.isLoggable(TRACE_LEVEL)) {
                 _logger.log(TRACE_LEVEL, traceInfoPrefix + "Passivating context "
@@ -2440,16 +2478,18 @@
 
     }
 
-    public final int getPassivationBatchCount() {
+    @Override
+    public int getPassivationBatchCount() {
         return this.passivationBatchCount;
     }
 
-    public final void setPassivationBatchCount(int count) {
+    public void setPassivationBatchCount(int count) {
         this.passivationBatchCount = count;
     }
 
     // called asynchronously from the Recycler
-    public final boolean passivateEJB(StatefulEJBContext sfsbCtx) {
+    @Override
+    public boolean passivateEJB(StatefulEJBContext sfsbCtx) {
         return passivateEJB((ComponentContext) sfsbCtx.getSessionContext());
     }
 
@@ -2463,6 +2503,7 @@
     }
 
     // called from StatefulSessionStore
+    @Override
     public void activateEJB(Object sessionKey, StatefulEJBContext sfsbCtx, Object cookie) {
         SessionContextImpl context = (SessionContextImpl) sfsbCtx.getSessionContext();
 
@@ -2640,10 +2681,12 @@
         }
     }
 
+    @Override
     public byte[] serializeContext(StatefulEJBContext ctx) throws IOException {
         return serializeContext((SessionContextImpl)ctx.getSessionContext());
     }
 
+    @Override
     public Object deserializeData(byte[] data) throws Exception {
         Object o = ejbContainerUtilImpl.getJavaEEIOUtils().deserializeObject(data, true, getClassLoader());
         if (o instanceof SessionContextImpl) {
@@ -2658,7 +2701,7 @@
                 try (ByteArrayInputStream bis = new ByteArrayInputStream(sejb.serializedFields);
                     ObjectInputStream ois = ejbContainerUtilImpl.getJavaEEIOUtils().createObjectInputStream(bis, true, getClassLoader());) {
 
-                    ejb = ejbClass.newInstance();
+                    ejb = ejbClass.getDeclaredConstructor().newInstance();
                     EJBUtils.deserializeObjectFields(ejb, ois, o, false);
                     ctx.setEJB(ejb);
                 }
@@ -2837,6 +2880,7 @@
         }
     }
 
+    @Override
     public void invokePeriodically(long delay, long periodicity, Runnable target) {
         java.util.Timer timer = ejbContainerUtilImpl.getTimer();
 
@@ -2851,14 +2895,14 @@
         undeploy((SessionContextImpl) sfsbCtx.getSessionContext());
     }
 
+    @Override
     protected String[] getPre30LifecycleMethodNames() {
         return new String[]{
                 null, null, "ejbRemove", "ejbPassivate", "ejbActivate"
         };
     }
 
-    ;
-
+    @Override
     protected void doConcreteContainerShutdown(boolean appBeingUndeployed) {
 
         cancelAllTimerTasks();
@@ -3105,6 +3149,7 @@
     }
 
     // CacheListener interface
+    @Override
     public void trimEvent(Object primaryKey, Object context) {
         boolean addTask = false;
         synchronized (asyncTaskSemaphore) {
@@ -3144,6 +3189,7 @@
 
     private class ASyncPassivator implements Runnable {
 
+        @Override
         public void run() {
             final Thread currentThread = Thread.currentThread();
             final ClassLoader previousClassLoader =
@@ -3159,6 +3205,7 @@
                 } else {
                     java.security.AccessController.doPrivileged
                             (new java.security.PrivilegedAction() {
+                                @Override
                                 public java.lang.Object run() {
                                     currentThread.setContextClassLoader(myClassLoader);
                                     return null;
@@ -3194,6 +3241,7 @@
                 } else {
                     java.security.AccessController.doPrivileged
                             (new java.security.PrivilegedAction() {
+                                @Override
                                 public java.lang.Object run() {
                                     currentThread.setContextClassLoader
                                             (previousClassLoader);
@@ -3444,13 +3492,13 @@
     static class EEMRefInfoKey
             implements Serializable {
 
-        private String emRefName;
+        private final String emRefName;
 
-        private long containerID;
+        private final long containerID;
 
-        private Object instanceKey;
+        private final Object instanceKey;
 
-        private int hc;
+        private final int hc;
 
         EEMRefInfoKey(String en, long cid, Object ikey) {
             this.emRefName = en;
@@ -3460,10 +3508,12 @@
             this.hc = instanceKey.hashCode();
         }
 
+        @Override
         public int hashCode() {
             return hc;
         }
 
+        @Override
         public boolean equals(Object obj) {
             boolean result = false;
             if (obj instanceof EEMRefInfoKey) {
@@ -3477,6 +3527,7 @@
             return result;
         }
 
+        @Override
         public String toString() {
             return "<" + instanceKey + ":" + emRefName + ":" + containerID + ">";
         }
@@ -3487,11 +3538,11 @@
 
         private transient int refCount = 0;
 
-        private String unitName;
+        private final String unitName;
 
-        private SynchronizationType synchronizationType;
+        private final SynchronizationType synchronizationType;
 
-        private EEMRefInfoKey eemRefInfoKey;
+        private final EEMRefInfoKey eemRefInfoKey;
 
         private byte[] serializedEEM;
 
@@ -3538,6 +3589,7 @@
         }
 
         //Method of IndirectlySerializable
+        @Override
         public SerializableObjectFactory getSerializableObjectFactory()
                 throws IOException {
 
@@ -3560,6 +3612,7 @@
         }
 
         //Method of SerializableObjectFactory
+        @Override
         public Object createObject()
                 throws IOException {
 
@@ -3596,6 +3649,7 @@
         }
 
         //Method of IndirectlySerializable
+        @Override
         public SerializableObjectFactory getSerializableObjectFactory()
                 throws IOException {
 
@@ -3603,6 +3657,7 @@
         }
 
         //Method of SerializableObjectFactory
+        @Override
         public Object createObject() throws IOException {
             return this;
         }
@@ -3619,12 +3674,14 @@
         this.ejbContainerUtil = ejbContainerUtil;
     }
 
+    @Override
     public void run() {
         if (!task.isExecuting()) {
             ejbContainerUtil.addWork(task);
         }
     }
 
+    @Override
     public boolean cancel() {
         boolean cancelled = super.cancel();
 
@@ -3651,6 +3708,7 @@
     }
 
     //This will be called with the correct ClassLoader
+    @Override
     public void run() {
         ClassLoader prevCL = Thread.currentThread().getContextClassLoader();
         try {
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/StatelessSessionContainer.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/StatelessSessionContainer.java
index 9df09b4..42612ed 100644
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/StatelessSessionContainer.java
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/StatelessSessionContainer.java
@@ -19,8 +19,6 @@
 
 import java.lang.reflect.Method;
 import java.rmi.RemoteException;
-import java.util.HashMap;
-import java.util.Map;
 import java.util.logging.Level;
 
 import jakarta.ejb.CreateException;
@@ -153,11 +151,13 @@
         return true;
     }
 
+    @Override
     protected EjbMonitoringStatsProvider getMonitoringStatsProvider(
             String appName, String modName, String ejbName) {
         return new StatelessSessionBeanStatsProvider(this, getContainerId(), appName, modName, ejbName);
     }
 
+    @Override
     protected void initializeHome()
         throws Exception
     {
@@ -234,6 +234,7 @@
            poolProp.poolIdleTimeoutInSeconds, loader, Boolean.parseBoolean(val));
     }
 
+    @Override
     protected void registerMonitorableComponents() {
         super.registerMonitorableComponents();
 
@@ -245,9 +246,11 @@
         _logger.log(Level.FINE, "[SLSB Container] registered monitorable");
     }
 
+    @Override
     public void onReady() {
     }
 
+    @Override
     public EJBObjectImpl createRemoteBusinessObjectImpl()
         throws CreateException, RemoteException
     {
@@ -266,6 +269,7 @@
     /**
      *
      */
+    @Override
     public EJBObjectImpl createEJBObjectImpl()
         throws CreateException, RemoteException
     {
@@ -289,6 +293,7 @@
     /**
      * Called during client creation request through EJB LocalHome view.
      */
+    @Override
     public EJBLocalObjectImpl createEJBLocalObjectImpl()
         throws CreateException
     {
@@ -312,6 +317,7 @@
     /**
      * Called during internal creation of session bean
      */
+    @Override
     public EJBLocalObjectImpl createEJBLocalBusinessObjectImpl(boolean localBeanView)
         throws CreateException
     {
@@ -327,6 +333,7 @@
 
     // Called from EJBObjectImpl.remove, EJBLocalObjectImpl.remove,
     // EJBHomeImpl.remove(Handle).
+    @Override
     protected void removeBean(EJBLocalRemoteObject ejbo, Method removeMethod,
         boolean local)
     throws RemoveException, EJBException, RemoteException
@@ -346,9 +353,11 @@
      * Note: EJB2.0 section 18.3.1 says that discarding an EJB
      * means that no methods other than finalize() should be invoked on it.
      */
+    @Override
     protected void forceDestroyBean(EJBContextImpl sc) {
-        if ( sc.getState() == EJBContextImpl.BeanState.DESTROYED )
-                return;
+        if ( sc.getState() == EJBContextImpl.BeanState.DESTROYED ) {
+            return;
+        }
 
         // mark context as destroyed
         sc.setState(EJBContextImpl.BeanState.DESTROYED);
@@ -361,10 +370,12 @@
     /**
      * Called when a remote invocation arrives for an EJB.
      */
+    @Override
     protected EJBObjectImpl getEJBObjectImpl(byte[] instanceKey) {
         return theEJBObjectImpl;
     }
 
+    @Override
     EJBObjectImpl getEJBRemoteBusinessObjectImpl(byte[] instanceKey) {
         return theRemoteBusinessObjectImpl;
     }
@@ -373,6 +384,7 @@
     * Called from EJBLocalObjectImpl.getLocalObject() while deserializing
     * a local object reference.
     */
+    @Override
     protected EJBLocalObjectImpl getEJBLocalObjectImpl(Object key) {
         return theEJBLocalObjectImpl;
     }
@@ -381,6 +393,7 @@
     * Called from EJBLocalObjectImpl.getLocalObject() while deserializing
     * a local business object reference.
     */
+    @Override
     EJBLocalObjectImpl getEJBLocalBusinessObjectImpl(Object key) {
         return theEJBLocalBusinessObjectImpl;
     }
@@ -389,6 +402,7 @@
     * Called from EJBLocalObjectImpl.getLocalObject() while deserializing
     * a local business object reference.
     */
+    @Override
     EJBLocalObjectImpl getOptionalEJBLocalBusinessObjectImpl(Object key) {
         return theOptionalEJBLocalBusinessObjectImpl;
     }
@@ -398,6 +412,7 @@
     * Called from preInvoke which is called from the EJBObject
     * for local and remote invocations.
     */
+    @Override
     protected ComponentContext _getContext(EjbInvocation inv) {
         try {
             SessionContextImpl sessionCtx =
@@ -409,6 +424,7 @@
         }
     }
 
+    @Override
     protected EJBContextImpl _constructEJBContextImpl(Object instance) {
     return new SessionContextImpl(instance, this);
     }
@@ -483,7 +499,7 @@
             // EJBContext methods not allowed will throw exceptions
             context.setState(EJBContextImpl.BeanState.POOLED);
         } catch ( Throwable th ) {
-            _logger.log(Level.SEVERE, "ejb.stateless_ejbcreate_exception", logParams);
+            _logger.log(Level.SEVERE, "ejb.stateless_ejbcreate_exception", containerInfo);
             CreateException creEx = new CreateException("Could not create stateless EJB");
             creEx.initCause(th);
             throw creEx;
@@ -503,6 +519,7 @@
         }
     }
 
+    @Override
     protected void doTimerInvocationInit(EjbInvocation inv, Object primaryKey)
             throws Exception {
         // TODO I don't understand this check.  What is ejbObject used for?
@@ -515,6 +532,7 @@
         }
     }
 
+    @Override
     public boolean userTransactionMethodsAllowed(ComponentInvocation inv) {
         boolean utMethodsAllowed = false;
         if( isBeanManagedTran ) {
@@ -535,12 +553,14 @@
      * Called from preInvoke which is called from the EJBObject
      * for local and remote invocations.
      */
+    @Override
     public void releaseContext(EjbInvocation inv) {
         SessionContextImpl sc = (SessionContextImpl)inv.context;
 
         // check if the bean was destroyed
-        if ( sc.getState() == EJBContextImpl.BeanState.DESTROYED )
+        if ( sc.getState() == EJBContextImpl.BeanState.DESTROYED ) {
             return;
+        }
 
             sc.setState(EJBContextImpl.BeanState.POOLED);
 
@@ -552,38 +572,34 @@
     }
 
 
+    @Override
     protected boolean isIdentical(EJBObjectImpl ejbo, EJBObject other)
         throws RemoteException
     {
 
         if ( other == ejbo.getStub() ) {
             return true;
-        }else {
-            try {
-                // other may be a stub for a remote object.
-                // Although all stateless sessionbeans for a bean type
-                // are identical, we dont know whether other is of the
-                // same bean type as ejbo.
-                if ( getProtocolManager().isIdentical(ejbo.getStub(), other) )
-                        return true;
-                else
-                        return false;
-            } catch ( Exception ex ) {
-                if(_logger.isLoggable(Level.SEVERE)) {
-                    _logger.log(Level.SEVERE,"ejb.ejb_getstub_exception",
-                        logParams);
-                    _logger.log(Level.SEVERE,"",ex);
-                }
-                throw new RemoteException("Error during isIdentical.", ex);
-            }
         }
-
+        try {
+            // other may be a stub for a remote object.
+            // Although all stateless sessionbeans for a bean type
+            // are identical, we dont know whether other is of the
+            // same bean type as ejbo.
+            return getProtocolManager().isIdentical(ejbo.getStub(), other);
+        } catch ( Exception ex ) {
+            if(_logger.isLoggable(Level.SEVERE)) {
+                _logger.log(Level.SEVERE,"ejb.ejb_getstub_exception", containerInfo);
+                _logger.log(Level.SEVERE,"",ex);
+            }
+            throw new RemoteException("Error during isIdentical.", ex);
+        }
     }
 
     /**
     * Check if the given EJBObject/LocalObject has been removed.
     * @exception NoSuchObjectLocalException if the object has been removed.
     */
+    @Override
     protected void checkExists(EJBLocalRemoteObject ejbObj)
     {
         // For stateless session beans, EJBObject/EJBLocalObj are never removed.
@@ -591,16 +607,19 @@
     }
 
 
+    @Override
     protected void afterBegin(EJBContextImpl context) {
         // Stateless SessionBeans cannot implement SessionSynchronization!!
         // EJB2.0 Spec 7.8.
     }
 
+    @Override
     protected void beforeCompletion(EJBContextImpl context) {
         // Stateless SessionBeans cannot implement SessionSynchronization!!
         // EJB2.0 Spec 7.8.
     }
 
+    @Override
     protected void afterCompletion(EJBContextImpl ctx, int status) {
         // Stateless SessionBeans cannot implement SessionSynchronization!!
         // EJB2.0 Spec 7.8.
@@ -609,6 +628,7 @@
     }
 
     // default
+    @Override
     public boolean passivateEJB(ComponentContext context) {
         return false;
     }
@@ -616,15 +636,8 @@
     // default
     public void activateEJB(Object ctx, Object instanceKey) {}
 
-/** TODO ???
-    public void appendStats(StringBuffer sbuf) {
-    sbuf.append("\nStatelessContainer: ")
-        .append("CreateCount=").append(statCreateCount).append("; ")
-        .append("RemoveCount=").append(statRemoveCount).append("; ")
-        .append("]");
-    }
-**/
 
+    @Override
     protected void doConcreteContainerShutdown(boolean appBeingUndeployed) {
 
         try {
@@ -666,6 +679,7 @@
         implements ObjectFactory
     {
 
+        @Override
         public Object create(Object param) {
             try {
                     return createStatelessEJB();
@@ -674,6 +688,7 @@
             }
         }
 
+        @Override
         public void destroy(Object obj) {
             SessionContextImpl sessionCtx = (SessionContextImpl) obj;
             // Note: stateless SessionBeans cannot have incomplete transactions
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/interceptors/InterceptorManager.java b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/interceptors/InterceptorManager.java
index 4ab646c..23b20b3 100644
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/interceptors/InterceptorManager.java
+++ b/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/containers/interceptors/InterceptorManager.java
@@ -62,20 +62,20 @@
     // Set when initializing interceptors for a non-ejb
     private InterceptorInfo interceptorInfo;
 
-    private ClassLoader loader;
+    private final ClassLoader loader;
 
-    private Class beanClass;
+    private final Class beanClass;
 
-    private String beanClassName;
+    private final String beanClassName;
 
-    private Logger _logger;
+    private final Logger _logger;
 
     private Class[] interceptorClasses;
 
     private Class[] serializableInterceptorClasses;
 
-    private Map<String, Integer> instanceIndexMap
-            = new HashMap<String, Integer>();
+    private final Map<String, Integer> instanceIndexMap
+            = new HashMap<>();
 
     private boolean interceptorsExists;
 
@@ -88,7 +88,7 @@
     // Optionally specified delegate to be set on SystemInterceptorProxy
     private Object runtimeInterceptor;
 
-    List<InterceptorDescriptor> frameworkInterceptors = new LinkedList<InterceptorDescriptor>();
+    List<InterceptorDescriptor> frameworkInterceptors = new LinkedList<>();
 
 
     public InterceptorManager(Logger _logger, BaseContainer container,
@@ -191,7 +191,7 @@
             MethodDescriptor mDesc, Method beanMethod) {
 
         ArrayList<AroundInvokeInterceptor> interceptors =
-                new ArrayList<AroundInvokeInterceptor>();
+                new ArrayList<>();
 
         for(InterceptorDescriptor interceptor : frameworkInterceptors) {
             Set<LifecycleCallbackDescriptor> aroundInvokeDescs =
@@ -252,7 +252,7 @@
 
 
         ArrayList<AroundInvokeInterceptor> interceptors =
-                new ArrayList<AroundInvokeInterceptor>();
+                new ArrayList<>();
 
 
         for(InterceptorDescriptor interceptor : frameworkInterceptors) {
@@ -279,7 +279,7 @@
 
         List<EjbInterceptor> list = (ejbDesc != null) ?
                 ejbDesc.getAroundTimeoutInterceptors(mDesc) :
-                new LinkedList<EjbInterceptor>();
+                new LinkedList<>();
 
         for (EjbInterceptor interceptor : list) {
             String className = interceptor.getInterceptorClassName();
@@ -475,16 +475,12 @@
         serializableInterceptorClasses = new Class[size];
         int index = 0;
         for (Class<?> interClass : classes) {
-
             interceptorClasses[index] = interClass;
             serializableInterceptorClasses[index] = interClass;
             instanceIndexMap.put(interClass.getName(), index);
             if (!Serializable.class.isAssignableFrom(interClass)) {
-
-                serializableInterceptorClasses[index] =
-                    EJBUtils.loadGeneratedSerializableClass(interClass.getClassLoader(),
-                            interClass.getName());
-
+                serializableInterceptorClasses[index] = EJBUtils
+                    .loadGeneratedSerializableClass(interClass.getClassLoader(), interClass);
             }
             index++;
         }
@@ -576,7 +572,7 @@
     private void initCallbackIndices(List<InterceptorDescriptor> callbackList,
                                      CallbackType callbackType) throws Exception {
 
-        ArrayList<CallbackInterceptor> callbacks = new ArrayList<CallbackInterceptor>();
+        ArrayList<CallbackInterceptor> callbacks = new ArrayList<>();
 
         int index = callbackType.ordinal();
 
@@ -617,7 +613,7 @@
     private List<CallbackInterceptor> createCallbackInterceptors(CallbackType eventType,
                                                           InterceptorDescriptor inter,
                                                           ClassLoader classLoaderToUse) throws Exception {
-        List<CallbackInterceptor> callbackList = new ArrayList<CallbackInterceptor>();
+        List<CallbackInterceptor> callbackList = new ArrayList<>();
 
         List<LifecycleCallbackDescriptor> orderedCallbackMethods =
             inter.getOrderedCallbackDescriptors(eventType, classLoaderToUse);
@@ -761,7 +757,7 @@
 
     public interface AroundInvokeContext extends InvocationContext {
 
-        public Object[] getInterceptorInstances();
+        Object[] getInterceptorInstances();
 
        /**
         * Called from Interceptor Chain to invoke the actual bean method.
@@ -771,13 +767,13 @@
         * interceptor code, so it must not be changed in order for any exception
         * handling logic in that code to function properly.
         */
-        public  Object invokeBeanMethod()
+        Object invokeBeanMethod()
             throws Throwable;
 
     }
 
     public interface InterceptorChain {
-    public Object invokeNext(int index, AroundInvokeContext invCtx)
+    Object invokeNext(int index, AroundInvokeContext invCtx)
         throws Throwable;
     }
 
diff --git a/appserver/ejb/ejb-container/src/test/java/com/sun/ejb/EJBUtilsTest.java b/appserver/ejb/ejb-container/src/test/java/com/sun/ejb/EJBUtilsTest.java
index 7aa18e0..4c38299 100644
--- a/appserver/ejb/ejb-container/src/test/java/com/sun/ejb/EJBUtilsTest.java
+++ b/appserver/ejb/ejb-container/src/test/java/com/sun/ejb/EJBUtilsTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Eclipse Foundation and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021-2022 Eclipse Foundation 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,32 +16,15 @@
 
 package com.sun.ejb;
 
-import com.sun.ejb.codegen.ClassGeneratorFactory;
-import com.sun.ejb.codegen.Generator;
-import com.sun.ejb.codegen.Remote30WrapperGenerator;
-import com.sun.ejb.codegen.ServiceInterfaceGenerator;
-
-import java.util.Collection;
-import java.util.concurrent.TimeUnit;
-
+import com.sun.ejb.codegen.EjbClassGeneratorFactory;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.MethodOrderer.OrderAnnotation;
 import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.TestMethodOrder;
-import org.openjdk.jmh.annotations.Benchmark;
-import org.openjdk.jmh.annotations.Mode;
-import org.openjdk.jmh.results.Result;
-import org.openjdk.jmh.results.RunResult;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
-import org.openjdk.jmh.runner.options.TimeValue;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.hasSize;
-import static org.hamcrest.Matchers.lessThan;
-import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertSame;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -52,100 +35,51 @@
 @TestMethodOrder(OrderAnnotation.class)
 public class EJBUtilsTest {
 
-    /**
-     * The value shall be high enough to pass on all standard environments,
-     * but lower than when we are generating classes. See warmup results in logs.
-     */
-    private static final double MAX_TIME_PER_OPERATION = 2_000_000d;
     private static final ClassLoader loader = EJBUtilsTest.class.getClassLoader();
-    private static double firstRunScore;
 
-    @Test
-    @Order(1)
-    public void generateAndLoad_firstRun() throws Exception {
-        Options options = new OptionsBuilder()
-            .include(getClass().getName() + ".*")
-            .warmupIterations(0)
-            .measurementIterations(1).forks(1).measurementTime(TimeValue.milliseconds(50L))
-            // should be able to detect deadlocks and race conditions when generating classes
-            .threads(100).timeout(TimeValue.seconds(5L))
-            .timeUnit(TimeUnit.MICROSECONDS)
-            .mode(Mode.SingleShotTime).shouldFailOnError(true)
-            .build();
+    private EjbClassGeneratorFactory factory;
 
-        Collection<RunResult> results = new Runner(options).run();
-        assertThat(results, hasSize(1));
-        Result<?> primaryResult = results.iterator().next().getPrimaryResult();
-        firstRunScore = primaryResult.getScore();
-        assertThat(primaryResult.getScore(), lessThan(MAX_TIME_PER_OPERATION));
+    @BeforeEach
+    public void createFactory() {
+        factory = new EjbClassGeneratorFactory(loader);
     }
 
-
-    @Test
-    @Order(2)
-    public void generateAndLoad_Benchmark() throws Exception {
-        Options options = new OptionsBuilder()
-            .include(getClass().getName() + ".*")
-            .warmupBatchSize(1).warmupForks(0).warmupIterations(1).warmupTime(TimeValue.milliseconds(50L))
-            .measurementIterations(1).forks(1).measurementTime(TimeValue.milliseconds(200L))
-            // should be able to detect race conditions when loading classes generated in previous test
-            .threads(100).timeout(TimeValue.seconds(5L))
-            .timeUnit(TimeUnit.MICROSECONDS)
-            .mode(Mode.AverageTime).shouldFailOnError(true)
-            .build();
-
-        Collection<RunResult> results = new Runner(options).run();
-        assertThat(results, hasSize(1));
-        Result<?> primaryResult = results.iterator().next().getPrimaryResult();
-        assertThat(primaryResult.getScore(), lessThan(firstRunScore / 4));
-    }
-
-
-    @Benchmark
-    public void generateAndLoad() throws Exception {
-        // random interface for the test
-        String interfaceName = ClassGeneratorFactory.class.getName();
-        Generator generator = new Remote30WrapperGenerator(loader, interfaceName, interfaceName);
-        Class<?> newClass = EJBUtils.generateAndLoad(generator, loader);
-        assertNotNull(newClass);
-        assertEquals(generator.getGeneratedClassName(), newClass.getName());
+    @AfterEach
+    public void closeFactory() {
+        factory.close();
     }
 
 
     @Test
     @Order(10)
     public void loadGeneratedRemoteBusinessClasses() throws Exception {
-        EJBUtils.loadGeneratedRemoteBusinessClasses(EjbUtilsTestInterface.class.getName());
-        Class<?> ifaceRemote = loader.loadClass("com.sun.ejb._EJBUtilsTest$EjbUtilsTestInterface_Remote");
+        Class<?> remoteIface = factory.ensureRemote(GeneratorTestExperiment.class.getName());
+        assertEquals("com.sun.ejb._GeneratorTestExperiment_Remote", remoteIface.getName());
+        Class<?> ifaceRemote = loader.loadClass("com.sun.ejb._GeneratorTestExperiment_Remote");
         assertTrue(ifaceRemote.isInterface());
-        Class<?> iface30 = loader.loadClass("com.sun.ejb.EJBUtilsTest$EjbUtilsTestInterface");
-        assertTrue(iface30.isInterface());
-        assertDoesNotThrow(() -> EJBUtils.loadGeneratedRemoteBusinessClasses(EjbUtilsTestInterface.class.getName()));
+        Class<?> iface30 = loader.loadClass("com.sun.ejb._GeneratorTestExperiment_Wrapper");
+        assertFalse(iface30.isInterface());
+        assertEquals(remoteIface, factory.ensureRemote(GeneratorTestExperiment.class.getName()));
     }
 
 
     @Test
     @Order(20)
     public void loadGeneratedGenericEJBHomeClass() throws Exception {
-        Class<?> newClass = EJBUtils.loadGeneratedGenericEJBHomeClass(loader);
+        Class<?> newClass = EJBUtils.loadGeneratedGenericEJBHomeClass(loader, GeneratorTestExperiment.class);
         assertNotNull(newClass);
         assertTrue(newClass.isInterface());
         assertEquals("com.sun.ejb.codegen.GenericEJBHome_Generated", newClass.getName());
-        assertSame(newClass, EJBUtils.loadGeneratedGenericEJBHomeClass(loader));
+        assertSame(newClass, factory.ensureGenericHome(GeneratorTestExperiment.class));
     }
 
 
     @Test
     @Order(30)
     public void generateSEI() throws Exception {
-        Generator generator = new ServiceInterfaceGenerator(ClassGeneratorFactory.class);
-        Class<?> newClass = EJBUtils.generateSEI(generator, loader);
+        Class<?> newClass = factory.ensureServiceInterface(GeneratorTestExperiment.class);
         assertNotNull(newClass);
-        assertEquals(generator.getGeneratedClassName(), newClass.getName());
-    }
-
-
-    interface EjbUtilsTestInterface {
-        void doSomething();
+        assertEquals("com.sun.ejb.GeneratorTestExperiment_GeneratedSEI", newClass.getName());
+        assertSame(newClass, factory.ensureServiceInterface(GeneratorTestExperiment.class));
     }
 }
diff --git a/appserver/ejb/ejb-container/src/test/java/com/sun/ejb/EjbClassGeneratorFactoryBenchmarkTest.java b/appserver/ejb/ejb-container/src/test/java/com/sun/ejb/EjbClassGeneratorFactoryBenchmarkTest.java
new file mode 100644
index 0000000..d14582f
--- /dev/null
+++ b/appserver/ejb/ejb-container/src/test/java/com/sun/ejb/EjbClassGeneratorFactoryBenchmarkTest.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2021-2022 Eclipse Foundation 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.ejb;
+
+import com.sun.ejb.codegen.EjbClassGeneratorFactory;
+import java.util.Collection;
+import java.util.concurrent.TimeUnit;
+
+import org.junit.jupiter.api.MethodOrderer.OrderAnnotation;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.Mode;
+import org.openjdk.jmh.results.Result;
+import org.openjdk.jmh.results.RunResult;
+import org.openjdk.jmh.runner.Runner;
+import org.openjdk.jmh.runner.options.Options;
+import org.openjdk.jmh.runner.options.OptionsBuilder;
+import org.openjdk.jmh.runner.options.TimeValue;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.hasSize;
+import static org.hamcrest.Matchers.lessThan;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+/**
+ * @author David Matejcek
+ */
+@TestMethodOrder(OrderAnnotation.class)
+public class EjbClassGeneratorFactoryBenchmarkTest {
+
+    /**
+     * The value shall be high enough to pass on all standard environments,
+     * but lower than when we are generating classes. See warmup results in logs.
+     */
+    private static final double MAX_TIME_PER_OPERATION = 2_000_000d;
+    private static final ClassLoader loader = EjbClassGeneratorFactoryBenchmarkTest.class.getClassLoader();
+    private static double firstRunScore;
+
+
+    @Test
+    @Order(1)
+    public void generate_firstRun() throws Exception {
+        Options options = new OptionsBuilder()
+            .include(getClass().getName() + ".*")
+            .warmupIterations(0)
+            .measurementIterations(1).forks(1).measurementTime(TimeValue.milliseconds(50L))
+            // should be able to detect deadlocks and race conditions when generating classes
+            .threads(100).timeout(TimeValue.seconds(5L))
+            .timeUnit(TimeUnit.MICROSECONDS)
+            .mode(Mode.SingleShotTime).shouldFailOnError(true)
+            .build();
+
+        Collection<RunResult> results = new Runner(options).run();
+        assertThat(results, hasSize(1));
+        Result<?> primaryResult = results.iterator().next().getPrimaryResult();
+        firstRunScore = primaryResult.getScore();
+        assertThat(primaryResult.getScore(), lessThan(MAX_TIME_PER_OPERATION));
+    }
+
+
+    @Test
+    @Order(2)
+    public void generate_benchmark() throws Exception {
+        Options options = new OptionsBuilder()
+            .include(getClass().getName() + ".*")
+            .warmupBatchSize(1).warmupForks(0).warmupIterations(1).warmupTime(TimeValue.milliseconds(50L))
+            .measurementIterations(1).forks(1).measurementTime(TimeValue.milliseconds(200L))
+            // should be able to detect race conditions when loading classes generated in previous test
+            .threads(100).timeout(TimeValue.seconds(5L))
+            .timeUnit(TimeUnit.MICROSECONDS)
+            .mode(Mode.AverageTime).shouldFailOnError(true)
+            .build();
+
+        Collection<RunResult> results = new Runner(options).run();
+        assertThat(results, hasSize(1));
+        Result<?> primaryResult = results.iterator().next().getPrimaryResult();
+        assertThat(primaryResult.getScore(), lessThan(firstRunScore / 4));
+    }
+
+
+    @Benchmark
+    public void ensureRemoteBenchmark() throws Exception {
+        final Class<?> newClass;
+        try (EjbClassGeneratorFactory factory = new EjbClassGeneratorFactory(loader)) {
+            newClass = factory.ensureRemote(TestInterface.class.getName());
+        }
+        assertNotNull(newClass);
+        assertEquals("com.sun.ejb._EjbClassGeneratorFactoryBenchmarkTest$TestInterface_Remote", newClass.getName());
+    }
+
+    interface TestInterface {
+        void doSomething();
+    }
+}
diff --git a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/InvalidHome.java b/appserver/ejb/ejb-container/src/test/java/com/sun/ejb/GeneratorTestExperiment.java
similarity index 66%
rename from appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/InvalidHome.java
rename to appserver/ejb/ejb-container/src/test/java/com/sun/ejb/GeneratorTestExperiment.java
index 665c754..8405475 100644
--- a/appserver/ejb/ejb-container/src/main/java/com/sun/ejb/codegen/InvalidHome.java
+++ b/appserver/ejb/ejb-container/src/test/java/com/sun/ejb/GeneratorTestExperiment.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022 Eclipse Foundation 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
@@ -14,14 +14,13 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package com.sun.ejb.codegen;
+package com.sun.ejb;
 
-public class InvalidHome extends GeneratorException {
 
-    /**
-     * Constructs the InvalidHome exception with the specified string.
-     */
-    public InvalidHome(String s) {
-        super(s);
-    }
+/**
+ * @author David Matejcek
+ */
+public interface GeneratorTestExperiment {
+
+    String sayHello();
 }
diff --git a/appserver/ejb/ejb-full-container/src/main/java/org/glassfish/ejb/persistent/timer/PersistentEJBTimerService.java b/appserver/ejb/ejb-full-container/src/main/java/org/glassfish/ejb/persistent/timer/PersistentEJBTimerService.java
index da973f0..33f1dd0 100755
--- a/appserver/ejb/ejb-full-container/src/main/java/org/glassfish/ejb/persistent/timer/PersistentEJBTimerService.java
+++ b/appserver/ejb/ejb-full-container/src/main/java/org/glassfish/ejb/persistent/timer/PersistentEJBTimerService.java
@@ -26,7 +26,6 @@
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
@@ -76,7 +75,7 @@
  */
 public class PersistentEJBTimerService extends EJBTimerService {
 
-    private TimerLocal timerLocal_;
+    private final TimerLocal timerLocal_;
 
     private static final Logger logger =
         LogDomains.getLogger(PersistentEJBTimerService.class, LogDomains.EJB_LOGGER);
@@ -160,6 +159,7 @@
     /**
      * Provide a count of timers owned by each server
      */
+    @Override
     public String[] listTimers( String[] serverIds ) {
         String[] totalTimers = null;
         try {
@@ -177,6 +177,7 @@
     /**
      * Take ownership of another server's timers.
      */
+    @Override
     public int migrateTimers(String fromOwnerId) {
 
         String ownerIdOfThisServer = getOwnerIdOfThisServer();
@@ -276,6 +277,7 @@
 
     } //migrateTimers()
 
+    @Override
     public boolean isPersistent() {
         return true;
     }
@@ -419,7 +421,7 @@
 
         Map timersToRestore = new HashMap();
         Set timerIdsToRemove = new HashSet();
-        Set<TimerState> result = new HashSet<TimerState>();
+        Set<TimerState> result = new HashSet<>();
 
         for(TimerState timer: timersEligibleForRestoration) {
 
@@ -452,7 +454,7 @@
                 // an entity bean.  That allows us to lazily load the underlying
                 // blob for stateless session and message-driven bean timers.
                 Object timedObjectPrimaryKey = null;
-                if( container.getContainerType() == BaseContainer.ContainerType.ENTITY) {
+                if (container.getContainerInfo().type == BaseContainer.ContainerType.ENTITY) {
                     timedObjectPrimaryKey = timer.getTimedObjectPrimaryKey();
                 }
 
@@ -570,16 +572,13 @@
             timerLocal_.remove(timerIdsToRemove);
         }
 
-        for(Iterator entries = timersToRestore.entrySet().iterator();
-            entries.hasNext(); ) {
-            Map.Entry next  = (Map.Entry) entries.next();
+        for (Object element : timersToRestore.entrySet()) {
+            Map.Entry next = (Map.Entry) element;
             RuntimeTimerState nextTimer = (RuntimeTimerState) next.getKey();
-            TimerPrimaryKey timerId    = nextTimer.getTimerId();
+            TimerPrimaryKey timerId = nextTimer.getTimerId();
             Date expiration = (Date) next.getValue();
             scheduleTask(timerId, expiration);
-            logger.log(Level.FINE,
-                       "EJBTimerService.restoreTimers(), scheduling timer " +
-                       nextTimer);
+            logger.log(Level.FINE, "EJBTimerService.restoreTimers(), scheduling timer " + nextTimer);
         }
 
         logger.log(Level.FINE, "DONE EJBTimerService.restoreTimers()");
@@ -708,14 +707,14 @@
             Map<Method, List<ScheduledTimerDescriptor>> schedules,
             boolean deploy) {
 
-        Map<TimerPrimaryKey, Method> result = new HashMap<TimerPrimaryKey, Method>();
+        Map<TimerPrimaryKey, Method> result = new HashMap<>();
 
         TransactionManager tm = ejbContainerUtil.getTransactionManager();
         try {
             tm.begin();
 
             Set<TimerState> timers = _restoreTimers(
-                    (Set<TimerState>)timerLocal_.findActiveTimersOwnedByThisServerByContainer(containerId));
+                    timerLocal_.findActiveTimersOwnedByThisServerByContainer(containerId));
 
             if (timers.size() > 0) {
                 logger.log(Level.FINE, "Found " + timers.size() +
@@ -756,9 +755,10 @@
      * Called in a clustered environment to eagerly create automatic persistent timers
      * on the specific server instance.
      */
+    @Override
     public void createSchedulesOnServer(EjbDescriptor ejbDescriptor, String server_name) {
         Map<MethodDescriptor, List<ScheduledTimerDescriptor>> schedules =
-                new HashMap<MethodDescriptor, List<ScheduledTimerDescriptor>>();
+                new HashMap<>();
         for (ScheduledTimerDescriptor schd : ejbDescriptor.getScheduledTimerDescriptors()) {
             MethodDescriptor method = schd.getTimeoutMethod();
             if (method != null && schd.getPersistent()) {
@@ -768,7 +768,7 @@
 
                 List<ScheduledTimerDescriptor> list = schedules.get(method);
                 if (list == null) {
-                    list = new ArrayList<ScheduledTimerDescriptor>();
+                    list = new ArrayList<>();
                     schedules.put(method, list);
                 }
                 list.add(schd);
@@ -794,6 +794,7 @@
      * Only persistent schedule based timers for the containerId that has no timers associated
      * with it, will be created. And no timers will be scheduled.
      */
+    @Override
     public void createSchedules(long containerId, long applicationId,
             Map<MethodDescriptor, List<ScheduledTimerDescriptor>> methodDescriptorSchedules, String server_name) {
         TransactionManager tm = ejbContainerUtil.getTransactionManager();
@@ -894,7 +895,7 @@
         // timer cache to avoid some database access in PE/SE, or
         // even in EE with the appropriate consistency tradeoff.
 
-        Collection<TimerPrimaryKey> timerIdsForTimedObject = new HashSet<TimerPrimaryKey>();
+        Collection<TimerPrimaryKey> timerIdsForTimedObject = new HashSet<>();
 
         if (timedObjectPrimaryKey == null) {
             timerIdsForTimedObject = timerLocal_.findActiveTimerIdsByContainer(containerId);
@@ -921,7 +922,7 @@
      */
     @Override
     protected Collection<TimerPrimaryKey> getTimerIds(Collection<Long> containerIds) {
-        Collection<TimerPrimaryKey> timerIds = new HashSet<TimerPrimaryKey>(super.getTimerIds(containerIds));
+        Collection<TimerPrimaryKey> timerIds = new HashSet<>(super.getTimerIds(containerIds));
         timerIds.addAll(timerLocal_.findActiveTimerIdsByContainers(containerIds));
         return timerIds;
     }
@@ -1486,6 +1487,7 @@
                     success = h.executeDDLStatement(
                             dir.getCanonicalPath() + "/ejbtimer_upgrade_", resource);
                     ConfigSupport.apply(new SingleConfigCode<Property>() {
+                        @Override
                         public Object run(Property p) throws PropertyVetoException, TransactionFailure {
                             p.setValue("true");
                             return null;
diff --git a/appserver/extras/javaee/manifest-jar/pom.xml b/appserver/extras/javaee/manifest-jar/pom.xml
index b44b3cf..43946d6 100644
--- a/appserver/extras/javaee/manifest-jar/pom.xml
+++ b/appserver/extras/javaee/manifest-jar/pom.xml
@@ -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.management.j2ee-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.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>
                             <GlassFish-ServerExcluded>true</GlassFish-ServerExcluded>
                         </manifestEntries>
                     </archive>
diff --git a/appserver/persistence/entitybean-container/src/main/java/org/glassfish/persistence/ejb/entitybean/container/EntityContainer.java b/appserver/persistence/entitybean-container/src/main/java/org/glassfish/persistence/ejb/entitybean/container/EntityContainer.java
index 7d84301..cef20a5 100644
--- a/appserver/persistence/entitybean-container/src/main/java/org/glassfish/persistence/ejb/entitybean/container/EntityContainer.java
+++ b/appserver/persistence/entitybean-container/src/main/java/org/glassfish/persistence/ejb/entitybean/container/EntityContainer.java
@@ -169,7 +169,8 @@
     implements CacheListener
 {
 
-    private ThreadLocal ejbServant = new ThreadLocal() {
+    private final ThreadLocal ejbServant = new ThreadLocal() {
+        @Override
         protected Object initialValue() {
             return null;
         }
@@ -276,10 +277,10 @@
 
         super.createCallFlowAgent(
                 isContainerManagedPers ? ComponentType.CMP : ComponentType.BMP);
-        _logger.log(Level.FINE,"[EntityContainer] Created EntityContainer: "
-                + logParams[0]);
+        _logger.log(Level.FINE,"[EntityContainer] Created EntityContainer: {0}", containerInfo);
     }
 
+    @Override
     protected void preInitialize(EjbDescriptor desc, ClassLoader loader) {
         EjbEntityDescriptor ed = (EjbEntityDescriptor)desc;
         isReentrant = ed.isReentrant();
@@ -402,6 +403,7 @@
         this.idleBeansPassivator = null;
     }
 
+    @Override
     protected InvocationInfo postProcessInvocationInfo(
             InvocationInfo invInfo) {
         Method method = invInfo.method;
@@ -431,6 +433,7 @@
     /**
      * Called from the ContainerFactory during initialization.
      */
+    @Override
     protected void initializeHome()
         throws Exception
     {
@@ -452,6 +455,7 @@
     registerMonitorableComponents();
     }
 
+    @Override
     protected void registerMonitorableComponents() {
         super.registerMonitorableComponents();
     if (readyStore != null) {
@@ -490,11 +494,13 @@
         _logger.log(Level.FINE, "[Entity Container] registered monitorable");
     }
 
+    @Override
     protected EjbMonitoringStatsProvider getMonitoringStatsProvider(
             String appName, String modName, String ejbName) {
         return new EntityBeanStatsProvider(this, getContainerId(), appName, modName, ejbName);
     }
 
+    @Override
     public void onReady() {
     }
 
@@ -557,6 +563,7 @@
     /**
      * Implementation of BaseContainer method. This is never called.
      */
+    @Override
     protected EJBObjectImpl createEJBObjectImpl()
         throws CreateException, RemoteException
     {
@@ -564,6 +571,7 @@
             "INTERNAL ERROR: EntityContainer.createEJBObject() called");
     }
 
+    @Override
     protected EJBLocalObjectImpl createEJBLocalObjectImpl()
         throws CreateException
     {
@@ -575,6 +583,7 @@
     /**
      * Called when a remote EjbInvocation arrives for an EJB.
      */
+    @Override
     protected EJBObjectImpl getEJBObjectImpl(byte[] streamKey) {
         // First get the primary key of the EJB
         Object primaryKey;
@@ -592,6 +601,7 @@
      * Called from EJBLocalObjectImpl.getLocalObject() while deserializing
      * a local object reference.
      */
+    @Override
     protected EJBLocalObjectImpl getEJBLocalObjectImpl(Object key) {
         return internalGetEJBLocalObjectImpl(key);
     }
@@ -600,6 +610,7 @@
      * Called from BaseContainer.preInvoke which is called from the EJBObject
      * for local and remote invocations, and from the EJBHome for create/find.
      */
+    @Override
     protected ComponentContext _getContext(EjbInvocation inv) {
         if ( inv.invocationInfo.isCreateHomeFinder ) {
             // create*, find*, home methods
@@ -614,10 +625,11 @@
             // context, so no need to synchronize.
             context.setState(BeanState.INVOKING);
 
-            if ( inv.invocationInfo.startsWithCreate )
+            if ( inv.invocationInfo.startsWithCreate ) {
                 preCreate(inv, context);
-            else if ( inv.invocationInfo.startsWithFind )
+            } else if ( inv.invocationInfo.startsWithFind ) {
                 preFind(inv, context);
+            }
 
 
             context.setLastTransactionStatus(-1);
@@ -632,15 +644,18 @@
         // If we would invoke the EJB with the client's Tx,
         // try to get an EJB with that incomplete Tx.
         EntityContextImpl context = null;
-        if ( willInvokeWithClientTx(inv) )
+        if ( willInvokeWithClientTx(inv) ) {
             context = getEJBWithIncompleteTx(inv);
-        if ( context == null )
+        }
+        if ( context == null ) {
             context = getReadyEJB(inv);
+        }
 
         synchronized ( context ) {
-            if ( context.isInState(BeanState.INVOKING) && !isReentrant )
+            if ( context.isInState(BeanState.INVOKING) && !isReentrant ) {
                 throw new EJBException(
                     "EJB is already executing another request");
+            }
             if (context.isInState(BeanState.POOLED) ||
                 context.isInState(BeanState.DESTROYED)) {
                 // somehow a concurrent thread must have changed state.
@@ -686,12 +701,14 @@
      * This is called from BaseContainer.postInvoke after
      * EntityContainer.preInvokeTx has been called.
      */
+    @Override
     public void releaseContext(EjbInvocation inv) {
         EntityContextImpl context = (EntityContextImpl)inv.context;
         boolean decrementedCalls = false; // End of IAS 4661771
 
-        if ( context.isInState(BeanState.DESTROYED) )
+        if ( context.isInState(BeanState.DESTROYED) ) {
             return;
+        }
 
         try {
             if ( context.hasReentrantCall() ) {
@@ -766,10 +783,11 @@
                 context.decrementCalls();
                 context.setLastTransactionStatus(-1);
                 if ( status == -1 || status == Status.STATUS_COMMITTED
-                || status == Status.STATUS_NO_TRANSACTION )
+                || status == Status.STATUS_NO_TRANSACTION ) {
                     addReadyEJB(context);
-                else
+                } else {
                     passivateAndPoolEJB(context);
+                }
             } else {
                 // biz methods and ejbCreate
                 // The EJB is still associated with a Tx.
@@ -779,8 +797,7 @@
                 doFlush( inv );
             }
         } catch ( Exception ex ) {
-            _logger.log(Level.FINE, "entitybean.container.release_context_exception",
-                        logParams);
+            _logger.log(Level.FINE, "entitybean.container.release_context_exception", containerInfo);
             _logger.log(Level.FINE, "",ex);
             throw new EJBException(ex);
         } finally {
@@ -808,12 +825,14 @@
      * is called.
      * Note: postCreate will not be called if ejbCreate throws an exception
      */
+    @Override
     public void postCreate(EjbInvocation inv, Object primaryKey)
         throws CreateException
     {
-        if ( primaryKey == null )
+        if ( primaryKey == null ) {
             throw new EJBException(
                 "Null primary key returned by ejbCreate method");
+        }
 
         if ( (isRemote) && (!inv.isLocal) ) {
             // remote EjbInvocation: create EJBObject
@@ -845,6 +864,7 @@
 
     //Called from EJB(Local)HomeInvocationHandler
     //Note: preFind is already called from getContext
+    @Override
     protected Object invokeFindByPrimaryKey(Method method,
         EjbInvocation inv, Object[] args)
     throws Throwable
@@ -854,12 +874,14 @@
     return postFind(inv, pKeys, null);
     }
 
+    @Override
     protected void authorizeLocalGetPrimaryKey(EJBLocalRemoteObject ejbObj)
             throws EJBException {
         authorizeLocalMethod(BaseContainer.EJBLocalObject_getPrimaryKey);
         checkExists(ejbObj);
     }
 
+    @Override
     protected void authorizeRemoteGetPrimaryKey(EJBLocalRemoteObject ejbObj)
             throws RemoteException {
         authorizeRemoteMethod(BaseContainer.EJBObject_getPrimaryKey);
@@ -890,6 +912,7 @@
     /**
      * Called from CMP PersistentManager
      */
+    @Override
     public void preSelect()
       throws jakarta.ejb.EJBException {
     // if the ejbSelect is being invoked with the client's transaction,
@@ -919,6 +942,7 @@
      * after ejb.ejbFind**() has been called.
      * Note: postFind will not be called if ejbFindXXX throws an exception
      */
+    @Override
     public Object postFind(EjbInvocation inv, Object primaryKeys,
         Object[] findParams)
         throws FinderException
@@ -933,10 +957,11 @@
                 Object primaryKey = e.nextElement();
                 Object ref;
                 if( primaryKey != null ) {
-                    if ( inv.isLocal )
+                    if ( inv.isLocal ) {
                         ref = getEJBLocalObjectForPrimaryKey(primaryKey);
-                    else
+                    } else {
                         ref = getEJBObjectStub(primaryKey, null);
+                    }
                     objrefs.add(ref);
                 } else {
                     objrefs.add(null);
@@ -952,10 +977,11 @@
                 Object primaryKey = it.next();
                 Object ref;
                 if( primaryKey != null ) {
-                    if ( inv.isLocal )
+                    if ( inv.isLocal ) {
                         ref = getEJBLocalObjectForPrimaryKey(primaryKey);
-                    else
+                    } else {
                         ref = getEJBObjectStub(primaryKey, null);
+                    }
                     objrefs.add(ref);
                 } else {
                     objrefs.add(null);
@@ -964,10 +990,11 @@
             return objrefs;
         } else {
             if( primaryKeys != null ) {
-                if ( inv.isLocal )
+                if ( inv.isLocal ) {
                     return getEJBLocalObjectForPrimaryKey(primaryKeys);
-                else
+                } else {
                     return getEJBObjectStub(primaryKeys, null);
+                }
             } else {
                 return null;
             }
@@ -981,6 +1008,7 @@
      * for a primary key (home.findByPrimaryKey cant be used because it may
      * not run in the same tx).
      */
+    @Override
     public EJBObject getEJBObjectForPrimaryKey(Object pkey) {
         // create stub without creating EJBObject
         return getEJBObjectStub(pkey, null);
@@ -1027,6 +1055,7 @@
      * @return The EJBLocalObject associated with the PK or null if it is cascade deleted.
      *
      */
+    @Override
     public EJBLocalObject getEJBLocalObjectForPrimaryKey
         (Object pkey, EJBContext ctx) {
         // EntityContextImpl should always be used in conjunction with EntityContainer so we can always cast
@@ -1045,8 +1074,7 @@
         ActiveTxCache activeTxCache = (current == null) ? null :
         (ActiveTxCache) (ejbContainerUtilImpl.getActiveTxCache(current));
             if (activeTxCache != null) {
-        EntityContextImpl ctx2 = (EntityContextImpl)
-            activeTxCache.get(this, pkey);
+        EntityContextImpl ctx2 = activeTxCache.get(this, pkey);
         if ((ctx2 != null) &&
             (ctx2.isCascadeDeleteAfterSuperEJBRemove())) {
             return null;
@@ -1065,6 +1093,7 @@
      * for a primary key (findByPrimaryKey cant be used because it may
      * not run in the same tx).
      */
+    @Override
     public EJBLocalObject getEJBLocalObjectForPrimaryKey(Object pkey) {
         EJBLocalObjectImpl localObjectImpl =
             internalGetEJBLocalObjectImpl(pkey);
@@ -1074,6 +1103,7 @@
 
     // Called from EJBHomeImpl.remove(primaryKey),
     // EJBLocalHomeImpl.remove(primaryKey)
+    @Override
     protected void doEJBHomeRemove(Object primaryKey, Method removeMethod,
         boolean local)
         throws RemoveException, EJBException, RemoteException
@@ -1090,6 +1120,7 @@
 
     // Called from EJBObjectImpl.remove, EJBLocalObjectImpl.remove,
     // and removeBean above.
+    @Override
     protected void removeBean(EJBLocalRemoteObject ejbo, Method removeMethod,
             boolean local)
         throws RemoveException, EJBException, RemoteException
@@ -1111,7 +1142,7 @@
             preInvoke(i);
             removeBean(i);
         } catch(Exception e) {
-            _logger.log(Level.SEVERE,"entitybean.container.preinvoke_exception",logParams);
+            _logger.log(Level.SEVERE,"entitybean.container.preinvoke_exception", containerInfo);
             _logger.log(Level.SEVERE,"",e);
             i.exception = e;
         } finally {
@@ -1177,14 +1208,14 @@
             cancelTimers(primaryKey);
         } catch ( RemoveException ex ) {
             if(_logger.isLoggable(Level.FINE)) {
-                _logger.log(Level.FINE,"entitybean.container.local_remove_exception",logParams);
+                _logger.log(Level.FINE,"entitybean.container.local_remove_exception", containerInfo);
                 _logger.log(Level.FINE,"",ex);
             }
             throw ex;
         }
         catch ( Exception ex ) {
             if(_logger.isLoggable(Level.FINE)) {
-                _logger.log(Level.FINE,"entitybean.container.remove_bean_exception",logParams);
+                _logger.log(Level.FINE,"entitybean.container.remove_bean_exception", containerInfo);
                 _logger.log(Level.FINE,"",ex);
             }
             throw new EJBException(ex);
@@ -1219,6 +1250,7 @@
      * Remove a bean. Used by the PersistenceManager.
      * This is needed because the PM's remove must bypass tx/security checks.
      */
+    @Override
     public void removeBeanUnchecked(EJBLocalObject localObj) {
         // First convert client EJBLocalObject to EJBLocalObjectImpl
         EJBLocalObjectImpl localObjectImpl =
@@ -1231,6 +1263,7 @@
      * Remove a bean. Used by the PersistenceManager.
      * This is needed because the PM's remove must bypass tx/security checks.
      */
+    @Override
     public void removeBeanUnchecked(Object primaryKey) {
         EJBLocalRemoteObject ejbo;
         if ( isLocal ) {
@@ -1336,6 +1369,7 @@
      * from BaseContainer.postInvokeTx, getReadyEJB,
      * afterBegin, beforeCompletion, passivateEJB.
      */
+    @Override
     protected void forceDestroyBean(EJBContextImpl ctx) {
         // Something bad happened (such as a RuntimeException),
         // so kill the bean and let it be GC'ed
@@ -1394,6 +1428,7 @@
 
     // Called before invoking a bean with no Tx or with a new Tx.
     // Check if the bean is associated with an unfinished tx.
+    @Override
     protected void checkUnfinishedTx(Transaction prevTx, EjbInvocation inv) {
 
         try {
@@ -1415,6 +1450,7 @@
      * Called before executing non-business methods of EJBLocalObject.
      * @exception NoSuchObjectLocalException if the object has been removed.
      */
+    @Override
     protected void checkExists(EJBLocalRemoteObject ejbObj) {
         // Need to call ejbLoad to see if persistent state is removed.
         // However, the non-business methods dont have a transaction attribute.
@@ -1422,12 +1458,14 @@
     }
 
     // Called from BaseContainer.SyncImpl
+    @Override
     protected void afterBegin(EJBContextImpl ctx) {
         EntityContextImpl context  = (EntityContextImpl)ctx;
 
         // Note: EntityBeans are not allowed to be TX_BEAN_MANAGED
-        if ( context.isInState(BeanState.DESTROYED) )
+        if ( context.isInState(BeanState.DESTROYED) ) {
             return;
+        }
 
         if ( !containerStateManager.isNullEJBObject(context)
              || !containerStateManager.isNullEJBLocalObject(context) ) {
@@ -1463,6 +1501,7 @@
     }
 
     // Called from BaseContainer.SyncImpl.beforeCompletion, postInvokeNoTx
+    @Override
     protected void beforeCompletion(EJBContextImpl ctx) {
         EntityContextImpl context = (EntityContextImpl)ctx;
         if ( context.isInState(BeanState.DESTROYED) ) {
@@ -1523,6 +1562,7 @@
     // getting reply from bean). So whatever is done here *MUST* be
     // consistent with releaseContext, and the bean should end up in
     // the correct state.
+    @Override
     protected void afterCompletion(EJBContextImpl ctx, int status) {
         EntityContextImpl context = (EntityContextImpl)ctx;
         if ( context.isInState(BeanState.DESTROYED) ) {
@@ -1670,6 +1710,7 @@
     }
 
     // CacheListener interface
+    @Override
     public void trimEvent(Object primaryKey, Object context) {
         synchronized (asyncTaskSemaphore) {
             passivationCandidates.add(context);
@@ -1692,6 +1733,7 @@
         implements Runnable
     {
 
+        @Override
         public void run() {
             final Thread currentThread = Thread.currentThread();
             final ClassLoader previousClassLoader =
@@ -1706,6 +1748,7 @@
                 } else {
                     java.security.AccessController.doPrivileged(
                             new java.security.PrivilegedAction() {
+                        @Override
                         public java.lang.Object run() {
                             currentThread.setContextClassLoader(myClassLoader);
                             return null;
@@ -1743,6 +1786,7 @@
                 } else {
                     java.security.AccessController.doPrivileged(
                             new java.security.PrivilegedAction() {
+                        @Override
                         public java.lang.Object run() {
                             currentThread.setContextClassLoader(previousClassLoader);
                             return null;
@@ -1755,6 +1799,7 @@
     }
 
     // Called from AbstractCache
+    @Override
     protected boolean passivateEJB(ComponentContext ctx) {
         if (containerState != CONTAINER_STARTED) {
             return false;
@@ -1779,8 +1824,9 @@
         boolean wasPassivated = false;
 
         // check state after locking ctx
-        if ( !context.isInState(BeanState.READY) )
+        if ( !context.isInState(BeanState.READY) ) {
             return false;
+        }
         try {
             invocationManager.preInvoke(inv);
 
@@ -1861,8 +1907,7 @@
             }
             return localObjImpl;
         } catch ( Exception ex ) {
-            _logger.log(Level.SEVERE,"entitybean.container.get_ejb_local_object_exception",
-                        logParams);
+            _logger.log(Level.SEVERE,"entitybean.container.get_ejb_local_object_exception", containerInfo);
             _logger.log(Level.SEVERE,"",ex);
             throw new EJBException(ex);
         }
@@ -1968,7 +2013,7 @@
             return ejbObjImpl;
         }
         catch ( Exception ex ) {
-            _logger.log(Level.FINE, "entitybean.container.get_ejb_context_exception", logParams);
+            _logger.log(Level.FINE, "entitybean.container.get_ejb_context_exception", containerInfo);
             _logger.log(Level.FINE,"",ex);
             throw new EJBException(ex);
         }
@@ -2004,8 +2049,9 @@
 
     // called from addReadyEJB and afterCompletion
     protected void passivateAndPoolEJB(EntityContextImpl context) {
-        if ( context.isInState(BeanState.DESTROYED) || context.isInState(BeanState.POOLED) )
+        if ( context.isInState(BeanState.DESTROYED) || context.isInState(BeanState.POOLED) ) {
             return;
+        }
 
         // if ( context.isPooled() ) {
         // context.isPooled(false);
@@ -2214,12 +2260,14 @@
             this.cache = cache;
         }
 
+        @Override
         public void run() {
             if (timerValid) {
                 cache.trimExpiredEntries(Integer.MAX_VALUE);
             }
         }
 
+    @Override
     public boolean cancel() {
         cache = null;
         return super.cancel();
@@ -2240,6 +2288,7 @@
             this.pkHashCode = primaryKey.hashCode();
         }
 
+        @Override
         public final int hashCode() {
             // Note: this hashcode need not be persistent across
             // activations of this process.
@@ -2251,6 +2300,7 @@
             return pkHashCode;
         }
 
+        @Override
         public final boolean equals(Object obj) {
             if ( !(obj instanceof EJBTxKey) ) {
                 return false;
@@ -2345,38 +2395,34 @@
     } //PoolProperties
 
 
+    @Override
     protected boolean isIdentical(EJBObjectImpl ejbObjImpl, EJBObject other)
             throws RemoteException {
-        if ( other == ejbObjImpl.getStub() ) {
+        if (other == ejbObjImpl.getStub()) {
             return true;
-        } else {
-            try {
-                // EJBObject may be a remote object.
-                // Compare homes. See EJB2.0 spec section 9.8.
-                if ( !getProtocolManager().isIdentical(ejbHomeStub,
-                                              other.getEJBHome()))
-                    return false;
-
-                // Compare primary keys.
-                if (!ejbObjImpl.getPrimaryKey().equals(other.getPrimaryKey())) {
-                    return false;
-                }
-
-                return true;
-            } catch ( Exception ex ) {
-                _logger.log(Level.INFO, "entitybean.container.ejb_comparison_exception",
-                            logParams);
-                _logger.log(Level.INFO, "", ex);
-                throw new RemoteException("Exception in isIdentical()", ex);
+        }
+        try {
+            // EJBObject may be a remote object.
+            // Compare homes. See EJB2.0 spec section 9.8.
+            if (!getProtocolManager().isIdentical(ejbHomeStub, other.getEJBHome())) {
+                return false;
             }
+
+            // Compare primary keys.
+            if (!ejbObjImpl.getPrimaryKey().equals(other.getPrimaryKey())) {
+                return false;
+            }
+
+            return true;
+        } catch (Exception ex) {
+            _logger.log(Level.INFO, "entitybean.container.ejb_comparison_exception", containerInfo);
+            _logger.log(Level.INFO, "", ex);
+            throw new RemoteException("Exception in isIdentical()", ex);
         }
     }
 
 
-    protected void callEJBLoad(EntityBean ejb, EntityContextImpl context,
-                               boolean activeTx)
-        throws Exception
-    {
+    protected void callEJBLoad(EntityBean ejb, EntityContextImpl context, boolean activeTx) throws Exception {
         try {
             context.setInEjbLoad(true);
             ejb.ejbLoad();
@@ -2389,9 +2435,8 @@
         }
     }
 
-    protected void callEJBStore(EntityBean ejb, EntityContextImpl context)
-        throws Exception
-    {
+
+    protected void callEJBStore(EntityBean ejb, EntityContextImpl context) throws Exception {
         try {
             context.setInEjbStore(true);
             ejb.ejbStore();
@@ -2401,8 +2446,8 @@
         }
     }
 
-    protected void callEJBRemove(EntityBean ejb, EntityContextImpl context)
-            throws Exception {
+
+    protected void callEJBRemove(EntityBean ejb, EntityContextImpl context) throws Exception {
         Exception exc = null;
         try {
             // TODO - check if it is needed: context.setInEjbRemove(true);
@@ -2422,6 +2467,7 @@
         }
     }
 
+    @Override
     protected void doTimerInvocationInit(EjbInvocation inv, Object primaryKey)
             throws Exception {
         if( isRemote ) {
@@ -2437,6 +2483,7 @@
         }
     }
 
+    @Override
     protected void doConcreteContainerShutdown(boolean appBeingUndeployed) {
 
         String ejbName = ejbDescriptor.getName();
@@ -2529,12 +2576,13 @@
     private class EntityContextFactory
         implements ObjectFactory
     {
-        private EntityContainer entityContainer;
+        private final EntityContainer entityContainer;
 
         public EntityContextFactory(EntityContainer entityContainer) {
             this.entityContainer = entityContainer;
         }
 
+        @Override
         public Object create(Object param) {
             EntityContextImpl entityCtx = null;
             EjbInvocation ejbInv = null;
@@ -2570,6 +2618,7 @@
         }
 
 
+        @Override
         public void destroy(Object object) {
             if (object == null) {
                 //means that this is called through forceDestroyBean
@@ -2752,6 +2801,7 @@
         readyStore.remove(primaryKey, context);
     }
 
+    @Override
     protected void addProxyInterfacesSetClass(Set proxyInterfacesSet, boolean local) {
         if( ejbDescriptor.getIASEjbExtraDescriptors().isIsReadOnlyBean() ) {
             if (local) {
@@ -2763,6 +2813,7 @@
 
     }
 
+    @Override
     protected void doFlush( EjbInvocation inv ) {
         if( !inv.invocationInfo.flushEnabled ||
             inv.exception != null )  {
@@ -2863,10 +2914,12 @@
         }
 
         //EJBObjectCacheListener interface
+        @Override
         public void handleOverflow(Object key) {
             doCleanup(key);
         }
 
+        @Override
         public void handleBatchOverflow(ArrayList paramKeys) {
             int size = paramKeys.size();
             synchronized (lock) {
@@ -2889,6 +2942,7 @@
             }
         }
 
+        @Override
         public void run() {
             final Thread currentThread = Thread.currentThread();
             final ClassLoader previousClassLoader =
@@ -2902,6 +2956,7 @@
                 } else {
                     java.security.AccessController.doPrivileged(
                             new java.security.PrivilegedAction() {
+                        @Override
                         public java.lang.Object run() {
                             currentThread.setContextClassLoader(myClassLoader);
                             return null;
@@ -2939,6 +2994,7 @@
                 } else {
                     java.security.AccessController.doPrivileged(
                             new java.security.PrivilegedAction() {
+                        @Override
                         public java.lang.Object run() {
                             currentThread.setContextClassLoader(previousClassLoader);
                             return null;
@@ -2961,6 +3017,7 @@
         protected EJBObjectCacheVictimHandler() {
         }
 
+        @Override
         protected void doCleanup(Object key) {
             removeEJBObjectFromStore(key, false);
         }
@@ -2971,48 +3028,57 @@
     class EntityCacheStatsProvider
     implements EjbCacheStatsProviderDelegate
     {
-    private BaseCache cache;
-    private int confMaxCacheSize;
+    private final BaseCache cache;
+    private final int confMaxCacheSize;
 
     EntityCacheStatsProvider(BaseCache cache, int maxCacheSize) {
         this.cache = cache;
         this.confMaxCacheSize = maxCacheSize;
     }
 
+    @Override
     public int getCacheHits() {
         return ((Integer) cache.getStatByName(
             Constants.STAT_BASECACHE_HIT_COUNT)).intValue();
     }
 
+    @Override
     public int getCacheMisses() {
         return ((Integer) cache.getStatByName(
             Constants.STAT_BASECACHE_MISS_COUNT)).intValue();
     }
 
+    @Override
     public int getNumBeansInCache() {
         return cache.getEntryCount();
     }
 
+    @Override
     public int getNumExpiredSessionsRemoved() {
         return 0;
     }
 
+    @Override
     public int getNumPassivationErrors() {
         return totalPassivationErrors;
     }
 
+    @Override
     public int getNumPassivations() {
         return totalPassivations;
     }
 
+    @Override
     public int getNumPassivationSuccess() {
         return totalPassivations - totalPassivationErrors;
     }
 
+    @Override
     public int getMaxCacheSize() {
         return this.confMaxCacheSize;
     }
 
+    @Override
     public void appendStats(StringBuffer sbuf) {
         sbuf.append("[Cache: ")
         .append("Size=").append(getNumBeansInCache()).append("; ")
@@ -3029,7 +3095,7 @@
 class ActiveTxCache {
 
     private EntityContextImpl[]        buckets;
-    private int                bucketMask;
+    private final int                bucketMask;
 
     ActiveTxCache(int numBuckets) {
     this.bucketMask = numBuckets - 1;
diff --git a/appserver/pom.xml b/appserver/pom.xml
index 01ddd27..ea31e66 100644
--- a/appserver/pom.xml
+++ b/appserver/pom.xml
@@ -85,7 +85,7 @@
         <version_suffix />
         <major_version>6</major_version>
         <minor_version>2</minor_version>
-        <update_version>4</update_version>
+        <update_version>5</update_version>
         <install.dir.name>glassfish6</install.dir.name>
 
         <!-- Jakarta Faces -->
diff --git a/appserver/tests/amx/pom.xml b/appserver/tests/amx/pom.xml
index 70e731f..7d48528 100755
--- a/appserver/tests/amx/pom.xml
+++ b/appserver/tests/amx/pom.xml
@@ -72,14 +72,6 @@
 
 
     <dependencies>
-
-        <dependency>
-            <groupId>javax.management.j2ee</groupId>
-            <artifactId>management-api</artifactId>
-            <version>${management-api.version}</version>
-            <scope>compile</scope>
-        </dependency>
-
         <dependency>
             <groupId>org.glassfish.common</groupId>
             <artifactId>amx-core</artifactId>
diff --git a/appserver/tests/amx/src/org/glassfish/admin/amxtest/AMXTestBase.java b/appserver/tests/amx/src/org/glassfish/admin/amxtest/AMXTestBase.java
index 4f9e72f..62cb034 100644
--- a/appserver/tests/amx/src/org/glassfish/admin/amxtest/AMXTestBase.java
+++ b/appserver/tests/amx/src/org/glassfish/admin/amxtest/AMXTestBase.java
@@ -16,17 +16,12 @@
 
 package org.glassfish.admin.amxtest;
 
-import com.sun.appserv.management.DomainRoot;
-import com.sun.appserv.management.base.AMX;
-import com.sun.appserv.management.base.BulkAccess;
+import com.sun.appserv.management.base.AMXDebugSupportMBean;
 import com.sun.appserv.management.base.NotificationServiceMgr;
 import com.sun.appserv.management.base.QueryMgr;
-import com.sun.appserv.management.base.SystemInfo;
-import com.sun.appserv.management.base.Util;
 import com.sun.appserv.management.base.XTypes;
 import com.sun.appserv.management.client.AppserverConnectionSource;
 import com.sun.appserv.management.client.ConnectionSource;
-import com.sun.appserv.management.client.ProxyFactory;
 import com.sun.appserv.management.config.AMXConfig;
 import com.sun.appserv.management.config.ConfigConfig;
 import com.sun.appserv.management.config.DomainConfig;
@@ -35,26 +30,36 @@
 import com.sun.appserv.management.config.NodeAgentConfig;
 import com.sun.appserv.management.config.ServerConfig;
 import com.sun.appserv.management.config.ServersConfig;
-import com.sun.appserv.management.j2ee.J2EEDomain;
-import com.sun.appserv.management.util.jmx.JMXUtil;
 import com.sun.appserv.management.util.jmx.MBeanServerConnectionConnectionSource;
-import com.sun.appserv.management.util.misc.ClassUtil;
-import com.sun.appserv.management.util.misc.ExceptionUtil;
 import com.sun.appserv.management.util.misc.GSetUtil;
-import com.sun.appserv.management.util.misc.TypeCast;
-import com.sun.appserv.management.base.AMXDebugSupportMBean;
 
-import javax.management.MBeanServerConnection;
-import javax.management.ObjectName;
-import javax.management.Attribute;
-import javax.management.AttributeList;
 import java.io.IOException;
 import java.lang.reflect.Method;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
-import java.util.HashMap;
+
+import javax.management.Attribute;
+import javax.management.AttributeList;
+import javax.management.MBeanServerConnection;
+import javax.management.ObjectName;
+
+import org.glassfish.admin.amx.base.BulkAccess;
+import org.glassfish.admin.amx.base.DomainRoot;
+import org.glassfish.admin.amx.base.SystemInfo;
+import org.glassfish.admin.amx.core.proxy.ProxyFactory;
+import org.glassfish.admin.amx.j2ee.J2EEDomain;
+import org.glassfish.admin.amx.util.ClassUtil;
+import org.glassfish.admin.amx.util.ExceptionUtil;
+import org.glassfish.admin.amx.util.TypeCast;
+import org.glassfish.admin.amx.util.jmx.JMXUtil;
+import org.glassfish.external.amx.AMX;
+
+import javassist.bytecode.analysis.Util;
+
+import static org.junit.jupiter.api.Assertions.fail;
 
 /**
  Base class for testing the AMX API
diff --git a/appserver/tests/appserv-tests/devtests/cdi/scopes/request-and-application-scope-ejb-mdb/build.xml b/appserver/tests/appserv-tests/devtests/cdi/scopes/request-and-application-scope-ejb-mdb/build.xml
index ef650bb..19d2a6c 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/scopes/request-and-application-scope-ejb-mdb/build.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/scopes/request-and-application-scope-ejb-mdb/build.xml
@@ -31,68 +31,70 @@
 
     <target name="all" depends="clean,build,create-resources,deploy,run,undeploy,delete-resources"/>
 
-    <target name="clean" depends="init-common">
-      <antcall  target="clean-common"/>
-    </target>
+  <target name="clean" depends="init-common">
+    <antcall  target="clean-common"/>
+  </target>
 
-    <target name="compile" depends="clean">
-        <antcall target="compile-common">
-            <param name="src" value="src"/>
-        </antcall>
-        <antcall target="compile-common">
-            <param name="src" value="client"/>
-        </antcall>
-    </target>
+  <target name="compile" depends="clean">
+    <antcall target="compile-common">
+      <param name="src" value="src"/>
+    </antcall>
+    <antcall target="compile-common">
+      <param name="src" value="client"/>
+    </antcall>
+  </target>
 
-    <target name="build" depends="compile">
-        <antcall target="build-ear-common">
-            <param name="ejbjar.classes"
+  <target name="build" depends="compile">
+    <antcall target="build-ear-common">
+      <param name="ejbjar.classes"
               value="**/*Bean*.class,**/*Hello*" />
-            <param name="appclientjar.classes"
+      <param name="appclientjar.classes"
               value="**/*Client*.class, test/ejb/session/HelloSless*.class" />
-        </antcall>
-    </target>
+    </antcall>
+  </target>
 
-    <target name="deploy"
+  <target name="deploy"
             depends="init-common">
-        <antcall target="deploy-common"/>
-    </target>
+    <antcall target="deploy-common"/>
+  </target>
 
-    <target name="create-resources" depends="init-common">
-        <antcall target="asadmin-batch-common">
-          <param name="asadmin.file" value="create_resources.asadmin"/>
-        </antcall>
-    </target>
+  <target name="create-resources" depends="init-common">
+    <antcall target="asadmin-batch-common">
+      <param name="asadmin.file" value="create_resources.asadmin"/>
+    </antcall>
+  </target>
 
-    <target name="delete-resources" depends="init-common">
-        <antcall target="asadmin-batch-common">
-          <param name="asadmin.file" value="delete_resources.asadmin"/>
-        </antcall>
-    </target>
+  <target name="delete-resources" depends="init-common">
+    <antcall target="asadmin-batch-common">
+      <param name="asadmin.file" value="delete_resources.asadmin"/>
+    </antcall>
+  </target>
 
-    <target name="run" depends="init-common">
-        <antcall target="runclient-common">
-          <param name="appclient.application.args" value="1"/>
-        </antcall>
-    </target>
+  <target name="run" depends="init-common">
+    <antcall target="runclient-common">
+      <param name="appclient.application.args" value="1"/>
+    </antcall>
+  </target>
 
-    <target name="run_standaloneclient" depends="init-common">
-       <java  fork="on"
-              failonerror="true"
-              classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/modules/jakarta.jms-api.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
-              classname="${simple.client}">
-        </java>
-    </target>
+  <target name="run_standaloneclient" depends="init-common">
+    <java fork="on"
+          failonerror="true"
+          classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/modules/jakarta.jms-api.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
+          classname="${simple.client}"
+    >
+      <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+    </java>
+  </target>
 
-    <target name="undeploy" depends="init-common">
-        <antcall target="undeploy-common"/>
-    </target>
+  <target name="undeploy" depends="init-common">
+    <antcall target="undeploy-common" />
+  </target>
 
-    <target name="usage">
-        <antcall target="usage-common"/>
-        <echo>
+  <target name="usage">
+    <antcall target="usage-common" />
+    <echo>
           ant create-resources Create all destinations and connection factories
           ant delete-resources Delete all destinations and connection factories
-        </echo>
-    </target>
+    </echo>
+  </target>
 </project>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-ejb-cdi/build.xml b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-ejb-cdi/build.xml
index d307603..00ec721 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-ejb-cdi/build.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-ejb-cdi/build.xml
@@ -68,6 +68,7 @@
                         classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
                         classname="${simple.client}">
                         <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}" />
+                        <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
                 </java>
         </target>
 
@@ -78,7 +79,7 @@
                         <jvmarg value="-Djava.naming.factory.initial=org.glassfish.jndi.cosnaming.CNCtxFactory" />
                         <jvmarg value="-Djava.naming.provider.url=iiop://localhost:${orb.port}" />
                         <jvmarg value="-Dorg.omg.CORBA.ORBInitialPort=${orb.port}" />
-
+                        <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
                 </java>
         </target>
 
diff --git a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-ejb-singleton/hello/build.xml b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-ejb-singleton/hello/build.xml
index 641b3e8..6ff321b 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-ejb-singleton/hello/build.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-ejb-singleton/hello/build.xml
@@ -31,50 +31,52 @@
 
     <target name="all" depends="build,deploy,run,undeploy"/>
 
-    <target name="clean" depends="init-common">
-      <antcall  target="clean-common"/>
-    </target>
+  <target name="clean" depends="init-common">
+    <antcall  target="clean-common"/>
+  </target>
 
-    <target name="compile" depends="clean">
-        <antcall target="compile-common">
-            <param name="src" value="ejb"/>
-        </antcall>
-        <antcall target="compile-common">
-            <param name="src" value="client"/>
-        </antcall>
-    </target>
+  <target name="compile" depends="clean">
+    <antcall target="compile-common">
+      <param name="src" value="ejb"/>
+    </antcall>
+    <antcall target="compile-common">
+      <param name="src" value="client"/>
+    </antcall>
+  </target>
 
-    <target name="build" depends="compile">
-        <antcall target="ejb-jar-common">
-            <param name="ejbjar.classes"
+  <target name="build" depends="compile">
+    <antcall target="ejb-jar-common">
+      <param name="ejbjar.classes"
               value="**/Foo*.class,**/Test*.class,**/Singleton*.class,**/Hello*.class"/>
-        </antcall>
-    </target>
+    </antcall>
+  </target>
 
-    <target name="deploy"
+  <target name="deploy"
             depends="init-common">
-        <antcall target="deploy-jar-common"/>
-    </target>
+    <antcall target="deploy-jar-common"/>
+  </target>
 
-    <target name="run" depends="init-common">
-        <antcall target="run_se"/>
-    </target>
+  <target name="run" depends="init-common">
+    <antcall target="run_se"/>
+  </target>
 
-    <target name="run_se" depends="init-common">
-       <java  fork="on"
-              failonerror="true"
-              classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/appserv-rt.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
-              classname="${se.client}">
-           <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
-           <arg line="${jndiroot}"/>
-        </java>
-    </target>
+  <target name="run_se" depends="init-common">
+    <java fork="on"
+          failonerror="true"
+          classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/appserv-rt.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
+          classname="${se.client}"
+    >
+      <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}" />
+      <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+      <arg line="${jndiroot}" />
+    </java>
+  </target>
 
-    <target name="undeploy" depends="init-common">
-        <antcall target="undeploy-jar-common"/>
-    </target>
+  <target name="undeploy" depends="init-common">
+    <antcall target="undeploy-jar-common" />
+  </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/smoke-tests/simple-mdb/build.xml b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-mdb/build.xml
index 088a503..8c58d32 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-mdb/build.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/simple-mdb/build.xml
@@ -81,7 +81,8 @@
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/modules/jakarta.jms-api.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${simple.client}">
-        </java>
+         <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+       </java>
     </target>
 
     <target name="undeploy" depends="init-common">
diff --git a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/singleton-startup/hello/build.xml b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/singleton-startup/hello/build.xml
index 85beda9..d1fcc73 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/singleton-startup/hello/build.xml
+++ b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/singleton-startup/hello/build.xml
@@ -66,6 +66,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/appserv-rt.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/singleton-startup/hello/client/Client.java b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/singleton-startup/hello/client/Client.java
index 0f24296..72b8161 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/singleton-startup/hello/client/Client.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/smoke-tests/singleton-startup/hello/client/Client.java
@@ -22,8 +22,6 @@
 
 import javax.naming.InitialContext;
 
-import javax.management.j2ee.ManagementHome;
-import javax.management.j2ee.Management;
 import javax.rmi.PortableRemoteObject;
 
 import com.acme.Hello;
@@ -50,16 +48,6 @@
     public void doTest() {
 
         try {
-
-            // Ensure that MEJB is registered under all three of its JNDI names
-            System.out.println("Looking up MEJB Homes");
-            ManagementHome mh1Obj = (ManagementHome) new InitialContext().lookup("ejb/mgmt/MEJB");
-            ManagementHome mh2Obj = (ManagementHome) new InitialContext().lookup("java:global/mejb/MEJBBean");
-            ManagementHome mh3Obj = (ManagementHome) new InitialContext().lookup("java:global/mejb/MEJBBean!javax.management.j2ee.ManagementHome");
-        addStatus("mejb relative lookup", (mh1Obj != null));
-        addStatus("mejb global lookup", (mh2Obj != null));
-        addStatus("mejb global lookup with explicit ManagedHome interface", (mh3Obj != null));
-
             Hello hello = (Hello) new InitialContext().lookup("java:global/" + appName + "/SingletonBean");
         String response = hello.hello();
         addStatus("Singleton bean response", response.equals("hello, world!\n"));
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/ejb32-mdb/build.xml b/appserver/tests/appserv-tests/devtests/connector/v3/ejb32-mdb/build.xml
index 817c04f..de03e24 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/ejb32-mdb/build.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/ejb32-mdb/build.xml
@@ -88,6 +88,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/jpa-tx-propagation-gf-resources-xml/build.xml b/appserver/tests/appserv-tests/devtests/connector/v3/jpa-tx-propagation-gf-resources-xml/build.xml
index d77e681..d95b284 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/jpa-tx-propagation-gf-resources-xml/build.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/jpa-tx-propagation-gf-resources-xml/build.xml
@@ -129,6 +129,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${simple.client}">
               <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+              <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
         </java>
     </target>
 
diff --git a/appserver/tests/appserv-tests/devtests/ejb/build.xml b/appserver/tests/appserv-tests/devtests/ejb/build.xml
index 6146e11..f172749 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/build.xml
@@ -41,7 +41,6 @@
     </patternset>
 
     <target name="all">
-
         <antcall target="setup"/>
         <antcall target="test-all"/>
         <antcall target="unsetup"/>
@@ -49,7 +48,6 @@
     </target>
 
     <target name="lite">
-
         <antcall target="setup"/>
         <antcall target="test-lite"/>
         <antcall target="unsetup"/>
@@ -57,21 +55,20 @@
     </target>
 
      <target name="ejb_group_1">
-
         <antcall target="setup"/>
         <antcall target="test-group-1"/>
         <antcall target="unsetup"/>
         <antcall target="report"/>
     </target>
 
-      <target name="ejb_group_2">
+    <target name="ejb_group_2">
         <antcall target="setup"/>
         <antcall target="test-group-2"/>
         <antcall target="unsetup"/>
         <antcall target="report"/>
     </target>
 
-      <target name="ejb_group_3">
+    <target name="ejb_group_3">
         <antcall target="setup"/>
         <antcall target="test-group-3"/>
         <antcall target="unsetup"/>
@@ -79,12 +76,16 @@
     </target>
 
 
-    <target name="setup">
+    <target name="ejb_group_embedded">
+        <ant dir="ejb32/embedded" target="all"/>
+        <ant dir="ejb31/embedded" target="all"/>
+        <antcall target="report"/>
+    </target>
 
+    <target name="setup">
         <antcall target="start-database"/>
         <ant target="startDomain"/>
         <ant target="clean-result"/>
-
     </target>
 
     <target name="clean-result">
@@ -105,26 +106,26 @@
     </target>
 
     <target name="test-all">
-
         <ant dir="stubs" target="all"/>
         <ant dir="txprop" target="all"/>
         <ant dir="ejbc" target="all"/>
         <ant dir="ejb30" target="all"/>
+
         <ant dir="mdb" target="all"/>
         <ant dir="cli" target="all"/>
         <ant dir="timer" target="all"/>
         <ant dir="bmp" target="all"/>
+
         <ant dir="cmp" target="all"/>
         <ant dir="sfsb" target="all"/>
         <ant dir="allowedmethods" target="all"/>
         <ant dir="jms" target="all"/>
         <ant dir="ejb32" target="all"/>
-<!-- disable as it fails on hudson ...
--->
-
-<!-- ejb31 must be the last set of tests because embedded test might stop database -->
         <ant dir="ejb31" target="all"/>
 
+        <!-- ejb31 must be the last set of tests because embedded test might stop database -->
+        <ant dir="ejb32/embedded" target="all"/>
+        <ant dir="ejb31/embedded" target="all"/>
     </target>
 
     <target name="test-group-1">
@@ -141,7 +142,7 @@
         <ant dir="bmp" target="all"/>
     </target>
 
-      <target name="test-group-3">
+    <target name="test-group-3">
         <ant dir="cmp" target="all"/>
         <ant dir="sfsb" target="all"/>
         <ant dir="allowedmethods" target="all"/>
@@ -152,15 +153,10 @@
 
 
 
-
-
     <target name="unsetup">
         <echo message="Stopping app server instance"/>
         <ant target="stopDomain"/>
-
         <antcall target="stop-database"/>
-
-
         <record name="ejb.output" action="stop" />
 
     </target>
@@ -299,8 +295,7 @@
         <echo>
                 Usage:
                         ant all (Executes all the ejb tests)
-            ant orb_integration (Executes all ejb-related orb integration tests
-
+                        ant orb_integration (Executes all ejb-related orb integration tests)
                         ant allowedmethods (Executes the ejb allowedmethods tests)
                         ant bmp (Executes the ejb bmp tests)
                         ant ejbc (Executes the ejb ejbc tests)
diff --git a/appserver/tests/appserv-tests/devtests/ejb/cli/negative/build.xml b/appserver/tests/appserv-tests/devtests/ejb/cli/negative/build.xml
index a478e1f..7100ea5 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/cli/negative/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/cli/negative/build.xml
@@ -41,6 +41,7 @@
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${env.APS_HOME}/lib/reportbuilder.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="deploy"/>
            <arg line="${assemble.dir}/${appname}App.ear"/>
         </java>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ee/timer/autotimer/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ee/timer/autotimer/build.xml
index ccf3d08..0a31604 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ee/timer/autotimer/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ee/timer/autotimer/build.xml
@@ -62,6 +62,7 @@
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${env.APS_HOME}/lib/reportbuilder.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="deploy"/>
            <arg line="${assemble.dir}/${appname}-web.war"/>
         </java>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ee/timer/domaindeployment/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ee/timer/domaindeployment/build.xml
index 3ef73ba..4377a60 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ee/timer/domaindeployment/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ee/timer/domaindeployment/build.xml
@@ -102,6 +102,7 @@
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${env.APS_HOME}/lib/reportbuilder.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="deploy"/>
            <arg line="${dtarget}"/>
            <arg line="${assemble.dir}/${appname}-web.war"/>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ee/timer/failover/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ee/timer/failover/build.xml
index de57dc7..d9584ea 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ee/timer/failover/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ee/timer/failover/build.xml
@@ -68,6 +68,7 @@
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${env.APS_HOME}/lib/reportbuilder.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="deploy"/>
            <arg line="${assemble.dir}/${appname}-web.war"/>
         </java>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ee/timer/getalltimers/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ee/timer/getalltimers/build.xml
index 63f9cd4..fce2db6 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ee/timer/getalltimers/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ee/timer/getalltimers/build.xml
@@ -67,6 +67,7 @@
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${env.APS_HOME}/lib/reportbuilder.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="deploy"/>
            <arg line="${assemble.dir}/${appname}-web.war"/>
         </java>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb30/clientview/adapted/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb30/clientview/adapted/build.xml
index 43ffc4d..818d5a4 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb30/clientview/adapted/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb30/clientview/adapted/build.xml
@@ -68,6 +68,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
         <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+        <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
         </java>
     </target>
 
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb30/clientview/core/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb30/clientview/core/build.xml
index 32ef0a9..520df82 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb30/clientview/core/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb30/clientview/core/build.xml
@@ -68,6 +68,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
         <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+        <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
         </java>
     </target>
 
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb30/clientview/exceptions/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb30/clientview/exceptions/build.xml
index 5bbad02..4bf0c0b 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb30/clientview/exceptions/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb30/clientview/exceptions/build.xml
@@ -68,6 +68,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
         <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+        <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
         </java>
     </target>
 
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb30/hello/mdb/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb30/hello/mdb/build.xml
index 08ad617..9cde5cb 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb30/hello/mdb/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb30/hello/mdb/build.xml
@@ -81,7 +81,8 @@
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/modules/jakarta.jms-api.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${simple.client}">
-        </java>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+       </java>
     </target>
 
     <target name="undeploy" depends="init-common">
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb30/hello/session/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb30/hello/session/build.xml
index e53901e..6b74d15 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb30/hello/session/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb30/hello/session/build.xml
@@ -31,74 +31,73 @@
 
     <target name="all" depends="build,deploy,run,undeploy"/>
 
-    <target name="clean" depends="init-common">
-      <antcall  target="clean-common"/>
-      <delete file="client/Client.java"/>
-    </target>
+  <target name="clean" depends="init-common">
+    <antcall  target="clean-common"/>
+    <delete file="client/Client.java"/>
+  </target>
 
-    <target name="compile" depends="clean">
-        <copy file="client/Client.java.token" tofile="client/Client.java"/>
-        <replace file="client/Client.java"
+  <target name="compile" depends="clean">
+    <copy file="client/Client.java.token" tofile="client/Client.java"/>
+    <replace file="client/Client.java"
           token="@ORB_PORT@" value="${orb.port}"/>
 
-        <antcall target="compile-common">
-            <param name="src" value="ejb"/>
-        </antcall>
-        <antcall target="compile-common">
-            <param name="src" value="client"/>
-        </antcall>
-    </target>
+    <antcall target="compile-common">
+      <param name="src" value="ejb"/>
+    </antcall>
+    <antcall target="compile-common">
+      <param name="src" value="client"/>
+    </antcall>
+  </target>
 
-    <target name="build" depends="compile">
-        <antcall target="build-ear-common">
-            <param name="ejbjar.classes"
+  <target name="build" depends="compile">
+    <antcall target="build-ear-common">
+      <param name="ejbjar.classes"
               value="**/Sful*.class,**/Sless*.class"/>
-            <param name="appclientjar.classes"
+      <param name="appclientjar.classes"
               value="**/Client.class,**/Sful.class,**/Sless.class"/>
-        </antcall>
-    </target>
+    </antcall>
+  </target>
 
-    <target name="deploy"
+  <target name="deploy"
             depends="init-common">
-        <antcall target="deploy-common"/>
-    </target>
+    <antcall target="deploy-common"/>
+  </target>
 
-    <target name="run" depends="init-common">
-        <antcall target="runclient-common"/>
-        <antcall target="run_standaloneclient"/>
-        <antcall target="run_standaloneclient2"/>
-    </target>
+  <target name="run" depends="init-common">
+    <antcall target="runclient-common"/>
+    <antcall target="run_standaloneclient"/>
+    <antcall target="run_standaloneclient2"/>
+  </target>
 
 
-    <target name="run_standaloneclient" depends="init-common">
-       <java  fork="on"
+  <target name="run_standaloneclient" depends="init-common">
+    <java  fork="on"
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${simple.client}">
-        <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
-        </java>
-    </target>
+      <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+      <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+    </java>
+  </target>
 
-    <target name="run_standaloneclient2" depends="init-common">
-       <java  fork="on"
-              failonerror="true"
-              classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
-              classname="${simple.client2}">
-              <jvmarg
-                   value="-Djava.naming.factory.initial=org.glassfish.jndi.cosnaming.CNCtxFactory"/>
-              <jvmarg
-                   value="-Djava.naming.provider.url=iiop://localhost:${orb.port}"/>
-              <jvmarg
-                   value="-Dorg.omg.CORBA.ORBInitialPort=${orb.port}"/>
+  <target name="run_standaloneclient2" depends="init-common">
+    <java fork="on"
+          failonerror="true"
+          classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
+          classname="${simple.client2}"
+    >
+      <jvmarg value="-Djava.naming.factory.initial=org.glassfish.jndi.cosnaming.CNCtxFactory" />
+      <jvmarg value="-Djava.naming.provider.url=iiop://localhost:${orb.port}" />
+      <jvmarg value="-Dorg.omg.CORBA.ORBInitialPort=${orb.port}" />
+      <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+    </java>
+  </target>
 
-        </java>
-    </target>
+  <target name="undeploy" depends="init-common">
+    <antcall target="undeploy-common" />
+  </target>
 
-    <target name="undeploy" depends="init-common">
-        <antcall target="undeploy-common"/>
-    </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/ejb/ejb30/persistence/tx_propagation/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb30/persistence/tx_propagation/build.xml
index df6dd8a..e10a86e 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb30/persistence/tx_propagation/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb30/persistence/tx_propagation/build.xml
@@ -125,6 +125,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${simple.client}">
               <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+              <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
         </java>
     </target>
 
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/asynchronous/localandremote/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/asynchronous/localandremote/build.xml
index 011ba54..8991d0f 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/asynchronous/localandremote/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/asynchronous/localandremote/build.xml
@@ -66,6 +66,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
            <arg line="10"/>
         </java>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/asynchronous/remote/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/asynchronous/remote/build.xml
index e9eefca..aa5badc 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/asynchronous/remote/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/asynchronous/remote/build.xml
@@ -66,6 +66,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
            <arg line="10"/>
         </java>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/asynchronous/threadpoolconfig/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/asynchronous/threadpoolconfig/build.xml
index 92bb8bf..91774b3 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/asynchronous/threadpoolconfig/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/asynchronous/threadpoolconfig/build.xml
@@ -69,6 +69,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${jndiroot} ${numOfInvocations} ${maxPoolSize}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/build.xml
index ffcc9ef..c7456fc 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/build.xml
@@ -40,7 +40,7 @@
         <antcall target="asynchronous"/>
         <antcall target="timer31"/>
         <antcall target="security"/>
-        <antcall target="embedded"/>
+<!--        <antcall target="embedded"/>-->
     </target>
 
     <target name="ejblite">
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/ejblite/generics/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/ejblite/generics/build.xml
index 8c83ed4..e46cffd 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/ejblite/generics/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/ejblite/generics/build.xml
@@ -64,6 +64,7 @@
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${contextroot}"/>
            <arg line="${http.host}"/>
            <arg line="${http.port}"/>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/ejblite/javamodule/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/ejblite/javamodule/build.xml
index 5887b41..1c6682a 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/ejblite/javamodule/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/ejblite/javamodule/build.xml
@@ -64,6 +64,7 @@
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${contextroot}"/>
            <arg line="${http.host}"/>
            <arg line="${http.port}"/>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/ejblite/jaxrs/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/ejblite/jaxrs/build.xml
index f9b83e4..e49f5bf 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/ejblite/jaxrs/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/ejblite/jaxrs/build.xml
@@ -65,6 +65,7 @@
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${contextroot}"/>
            <arg line="${http.host}"/>
            <arg line="${http.port}"/>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/ejblite/managedbean/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/ejblite/managedbean/build.xml
index 9f325ab..3ca7995 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/ejblite/managedbean/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/ejblite/managedbean/build.xml
@@ -64,6 +64,7 @@
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${contextroot}"/>
            <arg line="${http.host}"/>
            <arg line="${http.port}"/>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/ejblite/sinitcallejb/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/ejblite/sinitcallejb/build.xml
index f9ff039..a5fdeed 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/ejblite/sinitcallejb/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/ejblite/sinitcallejb/build.xml
@@ -64,6 +64,7 @@
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${contextroot}"/>
            <arg line="${http.host}"/>
            <arg line="${http.port}"/>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/basic/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/basic/build.xml
index 1cff99d..58c8454 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/basic/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/basic/build.xml
@@ -70,6 +70,8 @@
               failonerror="true"
               classpath="${assemble.dir}/${appname}-ejb.jar:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/datasourcedef/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/datasourcedef/build.xml
index 7d3bbbb..68ed376 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/datasourcedef/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/datasourcedef/build.xml
@@ -70,6 +70,8 @@
               failonerror="true"
               classpath="${assemble.dir}/${appname}-ejb.jar:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/ejbandwar/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/ejbandwar/build.xml
index 668a04f..cac7f47 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/ejbandwar/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/ejbandwar/build.xml
@@ -96,6 +96,8 @@
               failonerror="true"
               classpath="${assemble.dir}/${appname}-other.jar:${assemble.dir}/${appname}-web.war:${assemble.dir}/${appname}-pu.jar:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
@@ -107,10 +109,12 @@
               failonerror="true"
               classpath="${assemble.dir}/tmp:${assemble.dir}/other:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
-           <arg line="${jndiroot}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
 <!--
            <jvmarg value="-Dorg.glassfish.ejb.embedded.keep-temporary-files=true"/>
 -->
+           <arg line="${jndiroot}"/>
         </java>
     </target>
 
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/ejbinwar/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/ejbinwar/build.xml
index 8883578..8c51b5f 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/ejbinwar/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/ejbinwar/build.xml
@@ -87,6 +87,8 @@
               failonerror="true"
               classpath="${assemble.dir}/${appname}-web.war:${assemble.dir}/${appname}-pu.jar:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${appname}"/>
         </java>
     </target>
@@ -97,6 +99,8 @@
               failonerror="true"
               classpath="${assemble.dir}/${appname}-web.war:${assemble.dir}/${appname}-pu.jar:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
            <arg line="installed_instance"/>
         </java>
@@ -108,6 +112,8 @@
               failonerror="true"
               classpath="${assemble.dir}/${appname}-web.war:${assemble.dir}/${appname}-pu.jar:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${appname}"/>
            <arg line="servlet"/>
         </java>
@@ -118,6 +124,8 @@
               failonerror="true"
               classpath="${assemble.dir}/tmp:${assemble.dir}/${appname}-pu.jar:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/embedasync/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/embedasync/build.xml
index 75fc89b..459b343 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/embedasync/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/embedasync/build.xml
@@ -69,6 +69,8 @@
               failonerror="true"
               classpath="${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/jaxrs/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/jaxrs/build.xml
index 832aefd..28b6d56 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/jaxrs/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/jaxrs/build.xml
@@ -132,6 +132,8 @@
               classpath="${test-path}:${assemble.dir}/${appname}-pu.jar:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <jvmarg value="-Dorg.glassfish.ejb.embedded.keep-temporary-files=true"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${appname}"/>
            <arg line="${test}"/>
            <arg line="${packaging}"/>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/manifestonly/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/manifestonly/build.xml
index 3a76dc0..6a7179b 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/manifestonly/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/manifestonly/build.xml
@@ -87,6 +87,7 @@
               failonerror="true"
               classpath="${assemble.dir}/${appname}-all.jar:${assemble.dir}/${appname}-pu.jar:${embedded.classpath}"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${appname}-all"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/mdb/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/mdb/build.xml
index b39635e..5f311a1 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/mdb/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/mdb/build.xml
@@ -132,6 +132,8 @@
               failonerror="true"
               classpath="${assemble.dir}/${appname}-ejb.jar:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
 <!--
            <jvmarg value="-Dorg.glassfish.ejb.embedded.keep-temporary-files=true"/>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/modulewithappname/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/modulewithappname/build.xml
index e448e66..6dfc3a2 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/modulewithappname/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/modulewithappname/build.xml
@@ -79,6 +79,8 @@
               classpath="${assemble.dir}/${appname}-ejb.jar:${assemble.dir}/${appname}-pu.jar:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <jvmarg value="-Dorg.glassfish.ejb.embedded.keep-temporary-files=true"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${module}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/modulewithinheritance/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/modulewithinheritance/build.xml
index d0aa5a1..84d3fe7 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/modulewithinheritance/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/modulewithinheritance/build.xml
@@ -82,6 +82,8 @@
               failonerror="true"
               classpath="${assemble.dir}/${appname}-ejb.jar:${assemble.dir}/${appname}-pu.jar:${assemble.dir}/${appname}-base.jar:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/modulewithlibs/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/modulewithlibs/build.xml
index c12664e..4e0e07c 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/modulewithlibs/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/modulewithlibs/build.xml
@@ -82,6 +82,8 @@
               failonerror="true"
               classpath="${assemble.dir}/${appname}-ejb.jar:${assemble.dir}/${appname}-pu.jar:${assemble.dir}/${appname}-base.jar:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/modulewithmanifest/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/modulewithmanifest/build.xml
index e3b6a76..a3b80e1 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/modulewithmanifest/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/modulewithmanifest/build.xml
@@ -80,6 +80,8 @@
               failonerror="true"
               classpath="${assemble.dir}/${appname}-ejb.jar:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/profile/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/profile/build.xml
index 464b3fc..8cda53f 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/profile/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/profile/build.xml
@@ -68,7 +68,8 @@
               classpath="${assemble.dir}/${appname}-ejb.jar:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <arg line="${jndiroot}"/>
-<jvmarg value="-Dxuse.hash.for.appid=true"/>
+           <jvmarg value="-Dxuse.hash.for.appid=true"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
         </java>
     </target>
 
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/remote/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/remote/build.xml
index 01cedc3..17bf957 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/remote/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/remote/build.xml
@@ -76,6 +76,8 @@
               failonerror="true"
               classpath="${assemble.dir}/${appname}-ejb.jar:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/skipjar/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/skipjar/build.xml
index ab711be..53682b6 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/skipjar/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/skipjar/build.xml
@@ -83,6 +83,8 @@
               failonerror="true"
               classpath="${assemble.dir}/${appname}-client.jar:${assemble.dir}/${appname}-ejb.jar:${assemble.dir}/${appname}-pu.jar:${embedded.classpath}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
@@ -95,6 +97,8 @@
               failonerror="true"
               classpath="${assemble.dir}/${appname}-clientdir:${assemble.dir}/${appname}-ejb.jar:${assemble.dir}/${appname}-pu.jar:${embedded.classpath}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/testclose/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/testclose/build.xml
index 9b44bef..e7fc0fa 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/testclose/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/testclose/build.xml
@@ -70,6 +70,8 @@
               failonerror="true"
               classpath="${assemble.dir}/${appname}-ejb.jar:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/timertest/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/timertest/build.xml
index 1cacfa6..24cccc9 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/timertest/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/timertest/build.xml
@@ -76,6 +76,8 @@
               failonerror="true"
               classpath="${assemble.dir}/${appname}-ejb.jar:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
            <arg line="${persistent}"/>
         </java>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/twocontainers/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/twocontainers/build.xml
index a9fb513..e26225f 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/twocontainers/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/twocontainers/build.xml
@@ -70,6 +70,8 @@
               failonerror="true"
               classpath="${assemble.dir}/${appname}-ejb.jar:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+          <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+          <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
 <!--
             <jvmarg value="-Xdebug"/>
             <jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8085"/>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/twomodules/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/twomodules/build.xml
index 429f4b4..5f1cf86 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/twomodules/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/twomodules/build.xml
@@ -76,6 +76,8 @@
               failonerror="true"
               classpath="${assemble.dir}/${appname}-ejb1.jar:${assemble.dir}/${appname}-ejb2.jar:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${appname}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/twomoduleswithlibs/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/twomoduleswithlibs/build.xml
index 16e7952..6bb1a04 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/twomoduleswithlibs/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/embedded/twomoduleswithlibs/build.xml
@@ -110,11 +110,11 @@
               failonerror="true"
               classpath="${assemble.dir}/${appname}-ejb1.jar:${assemble.dir}/${appname}-ejb2.jar:${assemble.dir}/${appname}-base.jar:${assemble.dir}/${appname}-pu1.jar:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
-
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
 <!--
             <jvmarg value="-Xdebug"/>
             <jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8085"/>
-
 -->
            <arg line="${appname}"/>
         </java>
@@ -126,6 +126,8 @@
               failonerror="true"
               classpath="${assemble.dir}/${appname}-ejb2/classes:${assemble.dir}/${appname}-ejb1/classes:${assemble.dir}/${appname}-base/classes:${assemble.dir}/${appname}-pu1:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${appname}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/disable_nonportable_jndi/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/disable_nonportable_jndi/build.xml
index e14d29a..17c2dfb 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/disable_nonportable_jndi/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/disable_nonportable_jndi/build.xml
@@ -69,6 +69,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/ear/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/ear/build.xml
index 121d688..4411c33 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/ear/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/ear/build.xml
@@ -74,6 +74,7 @@
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${contextroot}"/>
            <arg line="${http.host}"/>
            <arg line="${http.port}"/>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/jcdifull/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/jcdifull/build.xml
index 6d17e0a..0fea1ed 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/jcdifull/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/jcdifull/build.xml
@@ -74,6 +74,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
            <arg line="ejb-ejb31-full-jcdifull-ejb"/>
         </java>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/passact/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/passact/build.xml
index 181bb06..f01b575 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/passact/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/passact/build.xml
@@ -69,6 +69,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/remote1/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/remote1/build.xml
index 7e9215c..16f8fcd 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/remote1/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/remote1/build.xml
@@ -69,6 +69,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/remote2/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/remote2/build.xml
index e21fda8..790c368 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/remote2/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/remote2/build.xml
@@ -66,6 +66,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
            <arg line="ejb-ejb31-full-remote1-ejb"/>
         </java>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/schema/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/schema/build.xml
index 3605d50..12244c6 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/schema/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/schema/build.xml
@@ -66,6 +66,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/sfsbscnc/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/sfsbscnc/build.xml
index 61ad649..234987a 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/sfsbscnc/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/sfsbscnc/build.xml
@@ -66,6 +66,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
            <arg line="7"/>
         </java>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/webandejb/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/webandejb/build.xml
index 39bc144..d158b9f 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/webandejb/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/full/webandejb/build.xml
@@ -64,6 +64,7 @@
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${contextroot}"/>
            <arg line="${http.host}"/>
            <arg line="${http.port}"/>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/security/simple/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/security/simple/build.xml
index 72955c5..eb6073a 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/security/simple/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/security/simple/build.xml
@@ -119,6 +119,8 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
            <arg line="anonymous"/>
         </java>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/cache/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/cache/build.xml
index 29a3c19..86fdb57 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/cache/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/cache/build.xml
@@ -66,6 +66,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/hello/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/hello/build.xml
index 1a8433e..d4add8d 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/hello/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/hello/build.xml
@@ -68,6 +68,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/appserv-rt.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/hello/client/Client.java b/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/hello/client/Client.java
index f64c869..d420ef5 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/hello/client/Client.java
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/hello/client/Client.java
@@ -21,8 +21,6 @@
 
 import javax.naming.InitialContext;
 
-import javax.management.j2ee.ManagementHome;
-import javax.management.j2ee.Management;
 import javax.rmi.PortableRemoteObject;
 
 import com.sun.ejte.ccl.reporter.SimpleReporterAdapter;
@@ -48,20 +46,8 @@
     public void doTest() {
 
         try {
-
-            // Ensure that MEJB is registered under all three of its JNDI names
-            System.out.println("Looking up MEJB Homes");
-            ManagementHome mh1Obj = (ManagementHome) new InitialContext().lookup("ejb/mgmt/MEJB");
-            ManagementHome mh2Obj = (ManagementHome) new InitialContext().lookup("java:global/mejb/MEJBBean");
-            ManagementHome mh3Obj = (ManagementHome) new InitialContext().lookup("java:global/mejb/MEJBBean!javax.management.j2ee.ManagementHome");
-
-            System.out.println("mejb home obj 1 = " + mh1Obj);
-            System.out.println("mejb home obj 2 = " + mh2Obj);
-            System.out.println("mejb home obj 3 = " + mh3Obj);
-
             Hello hello = (Hello) new InitialContext().lookup("java:global/" + appName + "/SingletonBean");
 
-
             System.out.println("Singleton says : " + hello.hello());
             hello.async();
 
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/hello/ejb/SingletonBean.java b/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/hello/ejb/SingletonBean.java
index c52f2db..a3923bd 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/hello/ejb/SingletonBean.java
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/hello/ejb/SingletonBean.java
@@ -23,11 +23,9 @@
 
 import javax.naming.InitialContext;
 
-import javax.management.j2ee.ManagementHome;
-
 @Singleton
 @Remote(Hello.class)
-    @EJB(name="mejb", beanInterface=javax.management.j2ee.ManagementHome.class, mappedName="ejb/mgmt/MEJB")
+@EJB(name="mejb", mappedName="ejb/mgmt/MEJB")
 @Startup
 public class SingletonBean {
 
@@ -37,28 +35,6 @@
     @PersistenceContext
     private EntityManager em;
 
-    /*Object returned from IIOP_OBJECT_FACTORY is still ior
-    @EJB(mappedName="ejb/mgmt/MEJB")
-    ManagementHome mHome1;
-    */
-
-    /* Object returned from IIOP_OBJECT_FACTORY is still ior
-    @EJB(lookup="java:global/mejb/MEJBBean")
-    ManagementHome mHome2;
-    */
-
-    /* Doesn't work b/c actual MEJB app Home interface is new glassfish
-     * type, so actual type derived from field declaration is tacked
-     * onto mappedName and results in NameNotFound
-    @EJB(mappedName="java:global/mejb/MEJBBean")
-    ManagementHome mHome2;
-    */
-
-
-
-
-    //MEJBHome mHome2;
-
     @PostConstruct
     public void init() {
         System.out.println("In SingletonBean::init()");
@@ -66,18 +42,6 @@
         if( orb == null ) {
             throw new EJBException("null ORB");
         }
-        try {
-            // same problem ManagementHome mHomeL = (ManagementHome) new InitialContext().lookup("java:comp/env/mejb");
-            // same problem ManagementHome mHomeL2 = (ManagementHome) new InitialContext().lookup("java:global/mejb/MEJBBean");
-            // System.out.println("mHomeL = " + mHomeL);
-            // System.out.println("mHomeL2 = " + mHomeL2);
-        } catch(Exception e) {
-            throw new EJBException(e);
-        }
-
-        // System.out.println("mHome1 = " + mHome1);
-        //        System.out.println("mHome2 = " + mHome2);
-
     }
 
     public String hello() {
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/multi-module/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/multi-module/build.xml
index 1d8b44f..1431949 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/multi-module/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/multi-module/build.xml
@@ -121,10 +121,10 @@
        <echo message="se.client: ${se.client}"/>
        <java  fork="on"
               failonerror="true"
-
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${assemble.dir}/${appname}-ejb.jar:${assemble.dir}/${appname}-client.jar:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${module}-ejb"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/threemodules/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/threemodules/build.xml
index e9956b2..b703777 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/threemodules/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/singleton/threemodules/build.xml
@@ -121,10 +121,10 @@
        <echo message="se.client: ${se.client}"/>
        <java  fork="on"
               failonerror="true"
-
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${assemble.dir}/${appname}-ejb.jar:${assemble.dir}/${appname}-client.jar:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${module}-ejb"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/timer31/mdb/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/timer31/mdb/build.xml
index b6413bc..99598cd 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/timer31/mdb/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/timer31/mdb/build.xml
@@ -79,6 +79,8 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb31/timer31/methodintf/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb31/timer31/methodintf/build.xml
index 2f1b034..622d2c8 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb31/timer31/methodintf/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb31/timer31/methodintf/build.xml
@@ -62,6 +62,8 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb32/build.xml
index a0ae448..f7d4505 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/build.xml
@@ -36,7 +36,7 @@
         <antcall target="intfces"/>
         <antcall target="persistence"/>
         <antcall target="interceptors"/>
-        <antcall target="embedded"/>
+<!--        <antcall target="embedded"/>-->
     </target>
 
     <target name="lite">
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/ejblite/async/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb32/ejblite/async/build.xml
index 80265b1..773b04d 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/ejblite/async/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/ejblite/async/build.xml
@@ -64,6 +64,7 @@
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${contextroot}"/>
            <arg line="${http.host}"/>
            <arg line="${http.port}"/>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/ejblite/nonpersistenttimer/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb32/ejblite/nonpersistenttimer/build.xml
index 88c76d5..b741cfb 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/ejblite/nonpersistenttimer/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/ejblite/nonpersistenttimer/build.xml
@@ -64,6 +64,7 @@
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${contextroot}"/>
            <arg line="${http.host}"/>
            <arg line="${http.port}"/>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/embedded/autoclose/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb32/embedded/autoclose/build.xml
index 659af97..80e66d3 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/embedded/autoclose/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/embedded/autoclose/build.xml
@@ -67,8 +67,10 @@
               failonerror="true"
               classpath="${assemble.dir}/${appname}-ejb.jar:${embedded.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="-Dxuse.hash.for.appid=true"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+           <jvmarg value="--add-opens=java.naming/javax.naming.spi=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
-<jvmarg value="-Dxuse.hash.for.appid=true"/>
         </java>
     </target>
 
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/aroundconstruct/annotation/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/aroundconstruct/annotation/build.xml
index c4e4d7a..f0d9231 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/aroundconstruct/annotation/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/aroundconstruct/annotation/build.xml
@@ -62,6 +62,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/appserv-rt.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${appname}-ejb"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/aroundconstruct/descriptor/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/aroundconstruct/descriptor/build.xml
index 4f08666..44f5224 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/aroundconstruct/descriptor/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/aroundconstruct/descriptor/build.xml
@@ -63,6 +63,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/appserv-rt.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${appname}-ejb"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/constructor-level/annotation/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/constructor-level/annotation/build.xml
index a73fbc5..85853d4 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/constructor-level/annotation/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/constructor-level/annotation/build.xml
@@ -62,6 +62,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/appserv-rt.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${appname}-ejb"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/constructor-level/descriptor/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/constructor-level/descriptor/build.xml
index 2820fba..d8b06a2 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/constructor-level/descriptor/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/constructor-level/descriptor/build.xml
@@ -63,6 +63,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/appserv-rt.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${appname}-ejb"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/get_method_lc/annotation/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/get_method_lc/annotation/build.xml
index c3e7912..5f8b2d7 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/get_method_lc/annotation/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/get_method_lc/annotation/build.xml
@@ -62,6 +62,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/appserv-rt.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${appname}-ejb"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/get_method_lc/descriptor/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/get_method_lc/descriptor/build.xml
index 240e381..7d7c099 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/get_method_lc/descriptor/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/get_method_lc/descriptor/build.xml
@@ -63,6 +63,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/appserv-rt.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${appname}-ejb"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/interceptors-inheritance/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/interceptors-inheritance/build.xml
index f363302..ed31fa3 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/interceptors-inheritance/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/interceptors-inheritance/build.xml
@@ -62,6 +62,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/appserv-rt.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${appname}-ejb"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/lc-method-constructor-level/annotation/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/lc-method-constructor-level/annotation/build.xml
index 3568d17..1a189c4 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/lc-method-constructor-level/annotation/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/lc-method-constructor-level/annotation/build.xml
@@ -62,6 +62,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/appserv-rt.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${appname}-ejb"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/lc-method-constructor-level/descriptor/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/lc-method-constructor-level/descriptor/build.xml
index 6cf2855..862699e 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/lc-method-constructor-level/descriptor/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/interceptors/lc-method-constructor-level/descriptor/build.xml
@@ -63,6 +63,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/appserv-rt.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${appname}-ejb"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/intfces/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb32/intfces/build.xml
index 758e6c9..250794c 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/intfces/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/intfces/build.xml
@@ -107,6 +107,7 @@
               <arg line="${client.type}"/>
               <arg line="${ejb.jar}"/>
               <arg line="${index}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/mdb/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb32/mdb/build.xml
index 817c04f..de03e24 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/mdb/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/mdb/build.xml
@@ -88,6 +88,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/mdb/ra/CommandResourceAdapter.java b/appserver/tests/appserv-tests/devtests/ejb/ejb32/mdb/ra/CommandResourceAdapter.java
index 2cd2254..0ed9298 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/mdb/ra/CommandResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/mdb/ra/CommandResourceAdapter.java
@@ -23,7 +23,7 @@
 import jakarta.resource.spi.ResourceAdapterInternalException;
 import jakarta.resource.spi.endpoint.MessageEndpoint;
 import jakarta.resource.spi.endpoint.MessageEndpointFactory;
-import jakarta.transaction.xa.XAResource;
+import javax.transaction.xa.XAResource;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.HashMap;
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/methodintf/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb32/methodintf/build.xml
index dc898ed..39bf1c7 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/methodintf/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/methodintf/build.xml
@@ -62,6 +62,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/basic/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/basic/build.xml
index 4e4e6e6..651d1d8 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/basic/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/basic/build.xml
@@ -66,6 +66,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/appserv-rt.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/basic/client/Client.java b/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/basic/client/Client.java
index 800f0b3..4f16875 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/basic/client/Client.java
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/basic/client/Client.java
@@ -21,8 +21,6 @@
 
 import javax.naming.InitialContext;
 
-import javax.management.j2ee.ManagementHome;
-import javax.management.j2ee.Management;
 import javax.rmi.PortableRemoteObject;
 
 import com.sun.ejte.ccl.reporter.SimpleReporterAdapter;
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/basic/ejb/SFSB.java b/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/basic/ejb/SFSB.java
index 46fc80f..6bca0ac 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/basic/ejb/SFSB.java
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/basic/ejb/SFSB.java
@@ -22,7 +22,6 @@
 
 import javax.naming.InitialContext;
 
-import javax.management.j2ee.ManagementHome;
 
 @Stateful
 @LocalBean
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/descriptor/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/descriptor/build.xml
index 97e57bb..fc88fd8 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/descriptor/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/descriptor/build.xml
@@ -66,6 +66,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/appserv-rt.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/descriptor/client/Client.java b/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/descriptor/client/Client.java
index 6e75724..fbc607d 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/descriptor/client/Client.java
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/descriptor/client/Client.java
@@ -21,8 +21,6 @@
 
 import javax.naming.InitialContext;
 
-import javax.management.j2ee.ManagementHome;
-import javax.management.j2ee.Management;
 import javax.rmi.PortableRemoteObject;
 
 import com.sun.ejte.ccl.reporter.SimpleReporterAdapter;
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/descriptor/ejb/SFSB.java b/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/descriptor/ejb/SFSB.java
index 12e1717..a797b05 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/descriptor/ejb/SFSB.java
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/descriptor/ejb/SFSB.java
@@ -22,8 +22,6 @@
 
 import javax.naming.InitialContext;
 
-import javax.management.j2ee.ManagementHome;
-
 public class SFSB implements Hello {
 
     private EntityManager em;
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/lifecycle_cb_txattr/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/lifecycle_cb_txattr/build.xml
index 6c87af9..ac27766 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/lifecycle_cb_txattr/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/lifecycle_cb_txattr/build.xml
@@ -66,6 +66,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/appserv-rt.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/lifecycle_cb_txattr/client/Client.java b/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/lifecycle_cb_txattr/client/Client.java
index 18b14ab..0a33261 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/lifecycle_cb_txattr/client/Client.java
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/lifecycle_cb_txattr/client/Client.java
@@ -21,8 +21,6 @@
 
 import javax.naming.InitialContext;
 
-import javax.management.j2ee.ManagementHome;
-import javax.management.j2ee.Management;
 import javax.rmi.PortableRemoteObject;
 
 import com.sun.ejte.ccl.reporter.SimpleReporterAdapter;
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/lifecycle_cb_txattr/ejb/SFSB.java b/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/lifecycle_cb_txattr/ejb/SFSB.java
index dd6d00a..d15a8c5 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/lifecycle_cb_txattr/ejb/SFSB.java
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/lifecycle_cb_txattr/ejb/SFSB.java
@@ -22,8 +22,6 @@
 
 import javax.naming.InitialContext;
 
-import javax.management.j2ee.ManagementHome;
-
 @Stateful
 @LocalBean
 public class SFSB implements Hello {
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/lifecycle_cb_txattr/ejb/SFSB1.java b/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/lifecycle_cb_txattr/ejb/SFSB1.java
index 2f0dc24..d689f39 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/lifecycle_cb_txattr/ejb/SFSB1.java
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/lifecycle_cb_txattr/ejb/SFSB1.java
@@ -22,8 +22,6 @@
 
 import javax.naming.InitialContext;
 
-import javax.management.j2ee.ManagementHome;
-
 @Stateful
 @LocalBean
 public class SFSB1 implements Hello1 {
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/lifecycle_cb_txattr/ejb/SFSB2.java b/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/lifecycle_cb_txattr/ejb/SFSB2.java
index 759bd84..a39af15 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/lifecycle_cb_txattr/ejb/SFSB2.java
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/sfsb/lifecycle_cb_txattr/ejb/SFSB2.java
@@ -22,8 +22,6 @@
 
 import javax.naming.InitialContext;
 
-import javax.management.j2ee.ManagementHome;
-
 @Stateful
 @LocalBean
 public class SFSB2 implements Hello2 {
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/timer/opallowed/build.xml b/appserver/tests/appserv-tests/devtests/ejb/ejb32/timer/opallowed/build.xml
index 314d8a4..fe95f0f 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/timer/opallowed/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/timer/opallowed/build.xml
@@ -31,98 +31,99 @@
 
     <target name="all" depends="clean,build,deploy,run,undeploy"/>
 
-    <target name="clean" depends="init-common">
-      <antcall  target="clean-common"/>
-    </target>
+  <target name="clean" depends="init-common">
+    <antcall  target="clean-common"/>
+  </target>
 
-    <target name="compile" depends="clean">
-        <!--this is tricky since webclient-war-common simply package all classes under ${war.classes}
+  <target name="compile" depends="clean">
+    <!--this is tricky since webclient-war-common simply package all classes under ${war.classes}
         and we need remote/local interface in the war-->
-                                <copy todir="war">
-                                    <fileset dir="ejb" includes="**/*Timeout.java,**/*TimeoutLocal.java"/>
-                          </copy>
-        <antcall target="compile-common">
-            <param name="src" value="war"/>
-        </antcall>
-        <delete>
-                                    <fileset dir="war" includes="**/*Timeout.java,**/*TimeoutLocal.java"/>
-                          </delete>
-        <antcall target="webclient-war-common">
-          <param name="hasWebclient" value="true"/>
-        </antcall>
-        <antcall target="compile-common">
-            <param name="src" value="ejb"/>
-        </antcall>
-        <antcall target="compile-common">
-            <param name="src" value="client"/>
-        </antcall>
-    </target>
+    <copy todir="war">
+      <fileset dir="ejb" includes="**/*Timeout.java,**/*TimeoutLocal.java"/>
+    </copy>
+    <antcall target="compile-common">
+      <param name="src" value="war"/>
+    </antcall>
+    <delete>
+      <fileset dir="war" includes="**/*Timeout.java,**/*TimeoutLocal.java"/>
+    </delete>
+    <antcall target="webclient-war-common">
+      <param name="hasWebclient" value="true"/>
+    </antcall>
+    <antcall target="compile-common">
+      <param name="src" value="ejb"/>
+    </antcall>
+    <antcall target="compile-common">
+      <param name="src" value="client"/>
+    </antcall>
+  </target>
 
-    <target name="build" depends="compile">
-      <mkdir dir="${assemble.dir}"/>
-      <antcall target="package-ejbjar-common">
-        <param name="ejbjar.files" value="${build.classes.dir}"/>
-        <param name="ejb.jar" value="${assemble.dir}/${appname}-ejb.jar"/>
-        <param name="ejbjar.classes" value="**/*Timeout*.class" />
-      </antcall>
-      <antcall target="appclient-jar-common">
-        <param name="appclientjar.classes" value="**/Client.class,**/*Timeout.class" />
-      </antcall>
-      <antcall target="ear-common"/>
-    </target>
+  <target name="build" depends="compile">
+    <mkdir dir="${assemble.dir}"/>
+    <antcall target="package-ejbjar-common">
+      <param name="ejbjar.files" value="${build.classes.dir}"/>
+      <param name="ejb.jar" value="${assemble.dir}/${appname}-ejb.jar"/>
+      <param name="ejbjar.classes" value="**/*Timeout*.class" />
+    </antcall>
+    <antcall target="appclient-jar-common">
+      <param name="appclientjar.classes" value="**/Client.class,**/*Timeout.class" />
+    </antcall>
+    <antcall target="ear-common"/>
+  </target>
 
-    <target name="deploy"
+  <target name="deploy"
             depends="init-common">
-        <antcall target="deploy-common"/>
-    </target>
+    <antcall target="deploy-common"/>
+  </target>
 
-          <!--run-appclient & run-jseclient are blocked by JIRA19546-->
-    <target name="run" depends="run-pojo, run-webapp, run-managedbean"/>
+  <!--run-appclient & run-jseclient are blocked by JIRA19546-->
+  <target name="run" depends="run-pojo, run-webapp, run-managedbean"/>
 
-          <target name="run-appclient" depends="init-common">
-              <antcall target="runclient-common"/>
-          </target>
+  <target name="run-appclient" depends="init-common">
+    <antcall target="runclient-common"/>
+  </target>
 
-          <target name="run-jseclient" depends="init-common">
-       <antcall target="run-client">
-         <param name="client.type" value="jseClient" />
-      </antcall>
-          </target>
+  <target name="run-jseclient" depends="init-common">
+    <antcall target="run-client">
+      <param name="client.type" value="jseClient" />
+    </antcall>
+  </target>
 
-          <target name="run-client">
-       <java  fork="on"
+  <target name="run-client">
+    <java  fork="on"
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${test.client}">
-                                         <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
-           <arg line="${client.type}"/>
-           <arg line="${http.port}"/>
-        </java>
-          </target>
+      <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}" />
+      <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
+      <arg line="${client.type}"/>
+      <arg line="${http.port}"/>
+    </java>
+  </target>
 
-          <target name="run-pojo" depends="init-common">
-       <antcall target="run-client">
-         <param name="client.type" value="pojo" />
-      </antcall>
-          </target>
+  <target name="run-pojo" depends="init-common">
+    <antcall target="run-client">
+      <param name="client.type" value="pojo" />
+    </antcall>
+  </target>
 
-          <target name="run-webapp" depends="init-common">
-       <antcall target="run-client">
-         <param name="client.type" value="webapp" />
-      </antcall>
-          </target>
+  <target name="run-webapp" depends="init-common">
+    <antcall target="run-client">
+      <param name="client.type" value="webapp" />
+    </antcall>
+  </target>
 
-          <target name="run-managedbean" depends="init-common">
-       <antcall target="run-client">
-         <param name="client.type" value="managedbean" />
-      </antcall>
-          </target>
+  <target name="run-managedbean" depends="init-common">
+    <antcall target="run-client">
+      <param name="client.type" value="managedbean" />
+    </antcall>
+  </target>
 
-    <target name="undeploy" depends="init-common">
-        <antcall target="undeploy-common"/>
-    </target>
+  <target name="undeploy" depends="init-common">
+    <antcall target="undeploy-common"/>
+  </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/ejb/run_test.sh b/appserver/tests/appserv-tests/devtests/ejb/run_test.sh
index 6660896..1487e39 100755
--- a/appserver/tests/appserv-tests/devtests/ejb/run_test.sh
+++ b/appserver/tests/appserv-tests/devtests/ejb/run_test.sh
@@ -294,7 +294,7 @@
 }
 
 list_test_ids(){
-        echo ejb_all ejb_timer_cluster_all ejb_web_all ejb_group_1 ejb_group_2 ejb_group_3
+        echo ejb_all ejb_timer_cluster_all ejb_web_all ejb_group_1 ejb_group_2 ejb_group_3 ejb_group_embedded
 }
 
 OPT=${1}
diff --git a/appserver/tests/appserv-tests/devtests/ejb/stubs/ejbapp/descriptor/ejb-jar.xml b/appserver/tests/appserv-tests/devtests/ejb/stubs/ejbapp/descriptor/ejb-jar.xml
index 4b2a197..35ebd04 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/stubs/ejbapp/descriptor/ejb-jar.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/stubs/ejbapp/descriptor/ejb-jar.xml
@@ -33,20 +33,6 @@
         <use-caller-identity/>
       </security-identity>
     </session>
-<!-- no javax.management.jar in workspace yet
-    <session>
-      <display-name>DummyMEJBBean</display-name>
-      <ejb-name>DummyMEJBBean</ejb-name>
-      <home>javax.management.j2ee.ManagementHome</home>
-      <remote>javax.management.j2ee.Management</remote>
-      <ejb-class>com.sun.s1asdev.ejb.stubs.ejbapp.DummyMEJBBean</ejb-class>
-      <session-type>Stateless</session-type>
-      <transaction-type>Bean</transaction-type>
-      <security-identity>
-        <use-caller-identity/>
-      </security-identity>
-    </session>
--->
   </enterprise-beans>
   <assembly-descriptor>
   </assembly-descriptor>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/stubs/ejbapp/ejb/DummyMEJBBean.java b/appserver/tests/appserv-tests/devtests/ejb/stubs/ejbapp/ejb/DummyMEJBBean.java
index 0030181..bb8ff4c 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/stubs/ejbapp/ejb/DummyMEJBBean.java
+++ b/appserver/tests/appserv-tests/devtests/ejb/stubs/ejbapp/ejb/DummyMEJBBean.java
@@ -16,118 +16,6 @@
 
 package com.sun.s1asdev.ejb.stubs.ejbapp;
 
-import java.io.Serializable;
-import java.rmi.RemoteException;
-import jakarta.ejb.SessionBean;
-import jakarta.ejb.SessionContext;
-import jakarta.ejb.EJBException;
-
-import java.util.*;
-//import javax.management.*;
-//import javax.management.j2ee.*;
-
-public class DummyMEJBBean {} /**
-implements SessionBean {
-
-    private SessionContext sc;
-
-    public DummyMEJBBean() {}
-
-    public void ejbCreate() throws RemoteException {
-        System.out.println("In DummyMEJBBean::ejbCreate !!");
-    }
-
-    public void setSessionContext(SessionContext sc) {
-        this.sc = sc;
-    }
-
-    public Set queryNames(ObjectName name, QueryExp query) {
-        return new HashSet();
-    }
-
-    public boolean isRegistered(ObjectName name) {
-        return false;
-    }
-
-    public Integer getMBeanCount() {
-
-        // Invoking this method from another app will verify that
-        // the context class loader for this app is set appropriately during
-        // the invocation.   The javax.management.j2ee apis are packaged
-        // as part of the server's classpath.  That matches the behavior of
-        // Bug 6342495, which showed that the context class loader was still
-        // set to the calling application when the Home/Remote interfaces were
-        // loaded from above the application classloader level.
-        //
-        // Calling getClassLoader tests that the context classloader is set
-        // appropriately because of the security requirements that J2SE
-        // imposes on requesting a class loader.  By default application code
-        // in the appserver does not have the RuntimePermission
-        // "getClassLoader".   In that case, requesting a class loader is only
-        // allowed if the returned class loader matches the requesting
-        // class' class loader(or is a child of it).  So, if the context
-        // class loader is still incorrectly set to the calling app's
-        // class loader, the call to getContextClassLoader() should throw
-        // a security exception.
-
-        // The advantage to writing the test using
-        // javax.management APIs and this behavior is it will work on an
-        // out-of-the-box installation of the appserver.  No additions to the
-        // server's classpath or the default server.policy file are needed.
-
-
-        System.out.println("In DummyEJBBean::getMBeanCount()");
-
-        System.out.println("My classloader = " +
-                           DummyMEJBBean.class.getClassLoader());
-
-        // This should fail with a security exception if the caller is in
-        // a separate app within the same server and the context class
-        // loader is still incorrectly set to the caller app's classloader.
-        System.out.println("context class loader = " +
-                           Thread.currentThread().getContextClassLoader());
-
-
-        return new Integer(0);
-    }
-
-
-    public MBeanInfo getMBeanInfo(ObjectName name) throws IntrospectionException, InstanceNotFoundException, ReflectionException {
-        return null;
-    }
-
-    public Object getAttribute(ObjectName name, String attribute) throws MBeanException, AttributeNotFoundException, InstanceNotFoundException, ReflectionException {
-        return null;
-    }
-
-    public AttributeList getAttributes(ObjectName name, String[] attributes) throws InstanceNotFoundException, ReflectionException {
-        return null;
-    }
-
-    public void setAttribute(ObjectName name, Attribute attribute) throws InstanceNotFoundException, AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException {
-        return;
-    }
-
-    public AttributeList setAttributes(ObjectName name, AttributeList attributes) throws InstanceNotFoundException, ReflectionException {
-        return null;
-    }
-
-    public Object invoke(ObjectName name, String operationName, Object[] params, String[] signature) throws  InstanceNotFoundException, MBeanException, ReflectionException {
-        return null;
-    }
-
-    public String getDefaultDomain() {
-        return null;
-    }
-
-    public ListenerRegistration getListenerRegistry() {
-        return null;
-    }
-
-    public void ejbRemove() throws RemoteException {}
-
-    public void ejbActivate() {}
-
-    public void ejbPassivate() {}
+public class DummyMEJBBean {
+    
 }
-                              */
diff --git a/appserver/tests/appserv-tests/devtests/ejb/stubs/standaloneclient/build.xml b/appserver/tests/appserv-tests/devtests/ejb/stubs/standaloneclient/build.xml
index b13140d..0da9b7b 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/stubs/standaloneclient/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/stubs/standaloneclient/build.xml
@@ -50,8 +50,8 @@
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/j2ee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${assemble.dir}/ejb-stubs-ejbappAppClient/ejb-stubs-ejbapp-clientClient.jar:${env.APS_HOME}/lib/reporter.jar"
            classname="${simple.client}">
-           <jvmarg
-                   value="-Dorg.omg.CORBA.ORBInitialPort=${orb.port}"/>
+           <jvmarg value="-Dorg.omg.CORBA.ORBInitialPort=${orb.port}"/>
+           <jvmarg value="-Dorg.glassfish.gmbal.no.multipleUpperBoundsException=true" />
            <arg value="ejb/ejb_stubs_ejbapp_HelloBean"/>
            <arg value="${ic.props}"/>
         </java>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/stubs/stubser/build.xml b/appserver/tests/appserv-tests/devtests/ejb/stubs/stubser/build.xml
index f45d11f..217a6a4 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/stubs/stubser/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/stubs/stubser/build.xml
@@ -84,6 +84,7 @@
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
         </java>
     </target>
 
@@ -92,6 +93,7 @@
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+         <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
          <arg line="handle"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/stubs/webclient/descriptor/web.xml b/appserver/tests/appserv-tests/devtests/ejb/stubs/webclient/descriptor/web.xml
index b28878f..479e9d8 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/stubs/webclient/descriptor/web.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/stubs/webclient/descriptor/web.xml
@@ -36,13 +36,5 @@
     <home>com.sun.s1asdev.ejb.stubs.ejbapp.HelloHome</home>
     <remote>com.sun.s1asdev.ejb.stubs.ejbapp.Hello</remote>
   </ejb-ref>
-<!--
- <ejb-ref>
-    <ejb-ref-name>ejb/dummymejb</ejb-ref-name>
-    <ejb-ref-type>Session</ejb-ref-type>
-    <home>javax.management.j2ee.ManagementHome</home>
-    <remote>javax.management.j2ee.Management</remote>
-  </ejb-ref>
--->
 </web-app>
 
diff --git a/appserver/tests/appserv-tests/devtests/ejb/stubs/webclient/servlet/Servlet.java b/appserver/tests/appserv-tests/devtests/ejb/stubs/webclient/servlet/Servlet.java
index cf43e50..ce6e779 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/stubs/webclient/servlet/Servlet.java
+++ b/appserver/tests/appserv-tests/devtests/ejb/stubs/webclient/servlet/Servlet.java
@@ -25,9 +25,6 @@
 import com.sun.s1asdev.ejb.stubs.ejbapp.Hello;
 import com.sun.s1asdev.ejb.stubs.ejbapp.HelloHome;
 
-//import javax.management.j2ee.ManagementHome;
-//import javax.management.j2ee.Management;
-
 public class Servlet extends HttpServlet {
 
 
diff --git a/appserver/tests/appserv-tests/devtests/ejb/timer/sessiontimer/ejb/TimerSessionEJB.java b/appserver/tests/appserv-tests/devtests/ejb/timer/sessiontimer/ejb/TimerSessionEJB.java
index 23448dc..9b17dfe 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/timer/sessiontimer/ejb/TimerSessionEJB.java
+++ b/appserver/tests/appserv-tests/devtests/ejb/timer/sessiontimer/ejb/TimerSessionEJB.java
@@ -49,7 +49,7 @@
 
             try {
                 System.out.println("Calling getMessageContext");
-                context.getMessageContext();
+                context.getEJBObject();
             } catch(IllegalStateException ise) {
                 System.out.println("getMessageContext() successfully threw illegalStateException");
             }
@@ -63,7 +63,7 @@
         public void ejbTimeout(Timer timer) {
             try {
                 System.out.println("Calling getMessageContext");
-                context.getMessageContext();
+                context.getEJBObject();
             } catch(IllegalStateException ise) {
                 System.out.println("getMessageContext() successfully threw illegalStateException");
             }
diff --git a/appserver/tests/appserv-tests/devtests/ejb/util/methodmap/build.xml b/appserver/tests/appserv-tests/devtests/ejb/util/methodmap/build.xml
index c2bc0d5..c426b9f 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/util/methodmap/build.xml
+++ b/appserver/tests/appserv-tests/devtests/ejb/util/methodmap/build.xml
@@ -31,40 +31,40 @@
 
     <target name="all" depends="build, runclient"/>
 
-    <target name="clean" depends="init-common">
-      <antcall  target="clean-common"/>
-    </target>
+  <target name="clean" depends="init-common">
+    <antcall  target="clean-common"/>
+  </target>
 
-    <target name="build" depends="init-common">
-       <mkdir dir="${build.classes.dir}"/>
-       <echo message="common.xml: Compiling test source files" level="verbose"/>
-       <javac srcdir="client"
-              destdir="${build.classes.dir}"
-              classpath="${s1astest.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
-              debug="on"
-              failonerror="true"/>
-    </target>
+  <target name="build" depends="init-common">
+    <mkdir dir="${build.classes.dir}"/>
+    <echo message="common.xml: Compiling test source files" level="verbose"/>
+    <javac srcdir="client"
+          destdir="${build.classes.dir}"
+          classpath="${s1astest.classpath}:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
+          debug="on"
+          failonerror="true"/>
+  </target>
 
-    <target name="runclient" depends="init-common">
-       <java  fork="on"
-              failonerror="true"
-              classpath="${env.S1AS_HOME}/lib/j2ee.jar:${env.S1AS_HOME}/lib/appserv-rt.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
-           classname="${simple.client}">
-        </java>
-    </target>
+  <target name="runclient" depends="init-common">
+    <java  fork="on"
+          failonerror="true"
+          classpath="${env.S1AS_HOME}/lib/j2ee.jar:${env.S1AS_HOME}/lib/appserv-rt.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
+          classname="${simple.client}">
+    </java>
+  </target>
 
 
-    <target name="perf" depends="init-common">
-       <java  fork="on"
-              failonerror="true"
-              classpath="${env.S1AS_HOME}/lib/j2ee.jar:${env.S1AS_HOME}/lib/appserv-rt.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
-           classname="${perf.client}">
-           <arg value="javax.xml.rpc.Service"/>
-           <arg value="100000"/>
-        </java>
-    </target>
+  <target name="perf" depends="init-common">
+    <java  fork="on"
+          failonerror="true"
+          classpath="${env.S1AS_HOME}/lib/j2ee.jar:${env.S1AS_HOME}/lib/appserv-rt.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
+          classname="${perf.client}">
+      <arg value="javax.xml.rpc.Service"/>
+      <arg value="100000"/>
+    </java>
+  </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/jdbc/jpa-dsd/build.xml b/appserver/tests/appserv-tests/devtests/jdbc/jpa-dsd/build.xml
index 406c42b..f34a457 100644
--- a/appserver/tests/appserv-tests/devtests/jdbc/jpa-dsd/build.xml
+++ b/appserver/tests/appserv-tests/devtests/jdbc/jpa-dsd/build.xml
@@ -136,6 +136,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${simple.client}">
               <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+              <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
         </java>
     </target>
 
diff --git a/appserver/tests/appserv-tests/devtests/naming/injection/build.xml b/appserver/tests/appserv-tests/devtests/naming/injection/build.xml
index 7e46363..d9f9b75 100644
--- a/appserver/tests/appserv-tests/devtests/naming/injection/build.xml
+++ b/appserver/tests/appserv-tests/devtests/naming/injection/build.xml
@@ -78,6 +78,7 @@
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
            <sysproperty key="org.omg.CORBA.ORBInitialPort" value="${orb.port}"/>
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="${jndiroot}"/>
         </java>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/transaction/ee/autorecovery/build.xml b/appserver/tests/appserv-tests/devtests/transaction/ee/autorecovery/build.xml
index 25375a0..7506b12 100644
--- a/appserver/tests/appserv-tests/devtests/transaction/ee/autorecovery/build.xml
+++ b/appserver/tests/appserv-tests/devtests/transaction/ee/autorecovery/build.xml
@@ -129,6 +129,7 @@
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${env.APS_HOME}/lib/reportbuilder.jar:${build.classes.dir}"
               classname="${se.client}">
+           <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
            <arg line="verify_xa"/>
            <arg line="${appname}-web"/>
            <arg line="in2"/>
diff --git a/appserver/tests/appserv-tests/devtests/transaction/ee/cli/build.xml b/appserver/tests/appserv-tests/devtests/transaction/ee/cli/build.xml
index 04c2b69..ad640ba 100644
--- a/appserver/tests/appserv-tests/devtests/transaction/ee/cli/build.xml
+++ b/appserver/tests/appserv-tests/devtests/transaction/ee/cli/build.xml
@@ -115,9 +115,9 @@
               failonerror="true"
               classpath="${env.S1AS_HOME}/lib/javaee.jar:${env.S1AS_HOME}/lib/gf-client.jar:${env.APS_HOME}/lib/reportbuilder.jar:${build.classes.dir}:${env.APS_HOME}/lib/reporter.jar"
               classname="${se.client}">
+           <sysproperty key="enableShoalLogger" value="${enableShoalLogger}"/>
            <arg line="prepare"/>
            <arg line="${assemble.dir}/${appname}-web.war"/>
-           <sysproperty key="enableShoalLogger" value="${enableShoalLogger}"/>
         </java>
     </target>
 
diff --git a/appserver/tests/appserv-tests/devtests/webservice/annotations/soaptcp/build.xml b/appserver/tests/appserv-tests/devtests/webservice/annotations/soaptcp/build.xml
index db63bb5..01c9fca 100644
--- a/appserver/tests/appserv-tests/devtests/webservice/annotations/soaptcp/build.xml
+++ b/appserver/tests/appserv-tests/devtests/webservice/annotations/soaptcp/build.xml
@@ -121,6 +121,7 @@
         <echo message="running client: client.Client dir: ${build.classes.dir}/client"/>
         <java fork="true" classname="client.Client" dir="${build.classes.dir}/client">
             <jvmarg value="-Djava.util.logging.config.file=logging.properties"/>
+            <jvmarg value="--add-opens=java.base/java.lang=ALL-UNNAMED" />
             <classpath>
                 <path refid="client-classpath"/>
                 <pathelement path="${build.classes.dir}/client"/>
diff --git a/appserver/tests/appserv-tests/devtests/webservice/google/mejbclient/MANIFEST.MF b/appserver/tests/appserv-tests/devtests/webservice/google/mejbclient/MANIFEST.MF
deleted file mode 100644
index 73cd735..0000000
--- a/appserver/tests/appserv-tests/devtests/webservice/google/mejbclient/MANIFEST.MF
+++ /dev/null
@@ -1,2 +0,0 @@
-Manifest-Version: 1.0
-Main-Class: google.MEJBClient
diff --git a/appserver/tests/appserv-tests/devtests/webservice/google/mejbclient/MEJBClient.java b/appserver/tests/appserv-tests/devtests/webservice/google/mejbclient/MEJBClient.java
deleted file mode 100644
index 4be7e3e..0000000
--- a/appserver/tests/appserv-tests/devtests/webservice/google/mejbclient/MEJBClient.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (c) 2001, 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
- */
-
-package google;
-
-//import com.sun.ejte.ccl.reporter.SimpleReporterAdapter;
-import java.io.*;
-import java.util.*;
-import java.net.*;
-import javax.management.j2ee.ManagementHome;
-import javax.management.j2ee.Management;
-import javax.management.*;
-import javax.naming.*;
-import javax.rmi.PortableRemoteObject;
-
-public class MEJBClient {
-
-//    private SimpleReporterAdapter stat =
-//        new SimpleReporterAdapter("appserv-tests");
-
-    public static void main(String[] args) {
-        MEJBClient client = new MEJBClient();
-
-        // run the tests
-        client.runTestClient();
-    }
-
-    public void runTestClient() {
-        try{
-//            stat.addDescription("Testing webservices mejb client app.");
-            test01();
-//            stat.printSummary("webservicesMejbAppID");
-        } catch (Exception ex) {
-            System.out.println("Exception in runTestClient: " + ex.toString());
-            ex.printStackTrace();
-        }
-    }
-
-    public void test01() {
-
-        // instanciate the mejb
-           try {
-
-            Context ic = new InitialContext();
-            System.out.println("***Created initial context");
-
-            java.lang.Object objref = ic.lookup("ejb/mgmt/MEJB");
-            System.out.println("***Looked up ManagementHome!!");
-
-            ManagementHome  home = (ManagementHome)PortableRemoteObject.narrow(
-                                             objref, ManagementHome.class);
-            System.out.println("***Narrowed ManagementHome!!");
-
-            Management mejb = home.create();
-            System.out.println("***Got the MEJB!!");
-
-            String domain = mejb.getDefaultDomain();
-            System.out.println("***MEJB default domain = "+domain);
-            int mbeanCount = mejb.getMBeanCount().intValue();
-            System.out.println("***MBeanCount = "+mbeanCount);
-
-            // Print attributes of all MBeans
-            ObjectName query = new ObjectName("*:j2eeType=J2EEApplication,name=googleApp,*");
-            Set mbeanNames = mejb.queryNames(query, null);
-            if ( mbeanNames.size() != 1 ) {
-                System.out.println("***ERROR: mbeans returned by query is "
-                +mbeanNames.size() + " it should be 1");
-            }
-
-            Iterator it = mbeanNames.iterator();
-            ObjectName name = (ObjectName)it.next();
-            System.out.println("Obtained jsr77 mbean for googleApp = "+name);
-
-                // Get attr values from MEJB and print them
-                try{
-                    Object attr = mejb.getAttribute(name, "hasWebServices");
-                    boolean hasWebServices=false;
-                    if (attr instanceof Boolean) {
-                        hasWebServices = ((Boolean) attr).booleanValue();
-                    }
-
-                    System.out.println("For HasWebServices "+hasWebServices);
-
-                    attr = mejb.getAttribute(name, "endpointAddresses");
-                    if (attr instanceof String[]) {
-                        String[] addresses = (String[]) attr;
-                        for (int i=0;i<addresses.length;i++) {
-                            System.out.println("Registered addresses " + addresses[i]);
-
-                            // retrieve the wsdl  file
-                            URL url = new URL("http://localhost:8080/"+addresses[i]+"?wsdl");
-                            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
-                            connection.setRequestMethod("GET");
-                            connection.connect();
-                            int responseCode = connection.getResponseCode();
-                            if (responseCode!=HttpURLConnection.HTTP_OK) {
-                                System.out.println("Cannot retrieve wsdl for " + addresses[i] + " error is " + connection.getResponseMessage());
-                            } else {
-                                InputStream is = new BufferedInputStream(connection.getInputStream());
-                                byte[] buffer = new byte[100];
-                                int read;
-                                do {
-                                    read = is.read(buffer,0, 100);
-                                    System.out.println(new String(buffer,0, read));
-                                } while(read==100 && read!=-1);
-                            }
-                        }
-                    }
-
-                }
-                catch(Exception exp){
-                    //exp.printStackTrace();
-                    System.out.println("***Exception occured while "+
-                            "accessing mbean details:  Keep continuing\n");
-                }
-
-            mejb.remove();
-
-        } catch(NamingException ne){
-            System.out.println("***Exception while initializing context.\n");
-            ne.printStackTrace();
-        } catch(Exception re) {
-            re.printStackTrace();
-        }
-    }
-
-}
diff --git a/appserver/tests/appserv-tests/devtests/webservice/google/mejbclient/application-client.xml b/appserver/tests/appserv-tests/devtests/webservice/google/mejbclient/application-client.xml
deleted file mode 100644
index 75db3a9..0000000
--- a/appserver/tests/appserv-tests/devtests/webservice/google/mejbclient/application-client.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?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
-
--->
-
-<application-client version="1.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/application-client_1_4.xsd">
-  <description>This is my mejb client</description>
-  <display-name>MEJBClient</display-name>
-  <ejb-ref>
-    <ejb-ref-name>ejbs/mejb</ejb-ref-name>
-    <ejb-ref-type>Session</ejb-ref-type>
-    <home>javax.management.j2ee.ManagementHome</home>
-    <remote>javax.management.j2ee.Management</remote>
-    <ejb-link>MEjbBean</ejb-link>
-  </ejb-ref>
-</application-client>
diff --git a/appserver/tests/appserv-tests/devtests/webservice/google/mejbclient/sun-application-client.xml b/appserver/tests/appserv-tests/devtests/webservice/google/mejbclient/sun-application-client.xml
deleted file mode 100644
index 5357b1b..0000000
--- a/appserver/tests/appserv-tests/devtests/webservice/google/mejbclient/sun-application-client.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE sun-application-client PUBLIC "-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 8.0 Application Client 1.4//EN" "http://www.sun.com/software/sunone/appserver/dtds/sun-application-client_1_4-0.dtd">
-<!--
-
-    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
-
--->
-
-<sun-application-client>
-  <ejb-ref>
-    <ejb-ref-name>ejbs/mejb</ejb-ref-name>
-    <jndi-name>ejb/mgmt/MEJB</jndi-name>
-  </ejb-ref>
-</sun-application-client>
diff --git a/appserver/tests/gftest.sh b/appserver/tests/gftest.sh
index cd64be0..0256cc9 100755
--- a/appserver/tests/gftest.sh
+++ b/appserver/tests/gftest.sh
@@ -49,7 +49,10 @@
 
   # setup the local repository
   # with the archived chunk from the pipeline build stage
-  cat ${WORKSPACE}/bundles/_maven-repo* | tar -xvz -f - --overwrite -m -p -C ${HOME}/.m2/repository
+  tar -xzf ${WORKSPACE}/bundles/maven-repo.tar.gz --overwrite -m -p -C ${HOME}/.m2/repository
+  echo "Removing old glassfish directory: ${S1AS_HOME}";
+  rm -rf "${S1AS_HOME}";
 fi
 
-"$@"
\ No newline at end of file
+"$@"
+
diff --git a/appserver/tests/quicklook/amx/src/test/amx/AMXConfigProxyTests.java b/appserver/tests/quicklook/amx/src/test/amx/AMXConfigProxyTests.java
index 3090a5a..36167d2 100644
--- a/appserver/tests/quicklook/amx/src/test/amx/AMXConfigProxyTests.java
+++ b/appserver/tests/quicklook/amx/src/test/amx/AMXConfigProxyTests.java
@@ -34,7 +34,6 @@
 import org.glassfish.admin.amx.core.*;
 import org.glassfish.admin.amx.base.*;
 import org.glassfish.admin.amx.config.*;
-//import org.glassfish.admin.amx.j2ee.*;
 import org.glassfish.admin.amx.monitoring.*;
 import org.glassfish.admin.amx.util.CollectionUtil;
 import org.glassfish.admin.amx.util.ExceptionUtil;
diff --git a/appserver/tests/quicklook/run_test.sh b/appserver/tests/quicklook/run_test.sh
index effa86e..1a0b1b2 100755
--- a/appserver/tests/quicklook/run_test.sh
+++ b/appserver/tests/quicklook/run_test.sh
@@ -26,7 +26,7 @@
         cp ${WORKSPACE}/nucleus/domains/domain1/logs/server.log* ${WORKSPACE}/results
     fi
     cp ${TEST_RUN_LOG} ${WORKSPACE}/results/
-    tar -cf ${WORKSPACE}/${1}-results.tar.gz ${WORKSPACE}/results
+    tar -czf ${WORKSPACE}/${1}-results.tar.gz ${WORKSPACE}/results
     change_junit_report_class_names
 }
 
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/common/com/sun/enterprise/admin/mbeanapi/common/AMXMonitoringTestBase.java b/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/common/com/sun/enterprise/admin/mbeanapi/common/AMXMonitoringTestBase.java
deleted file mode 100644
index e6ab0a2..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/common/com/sun/enterprise/admin/mbeanapi/common/AMXMonitoringTestBase.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright (c) 2003, 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
- */
-
-package com.sun.enterprise.admin.mbeanapi.common;
-
-import com.sun.appserv.management.DomainRoot;
-import com.sun.appserv.management.monitor.ApplicationMonitor;
-import com.sun.appserv.management.monitor.MonitoringRoot;
-import com.sun.appserv.management.monitor.MonitoringStats;
-import com.sun.appserv.management.monitor.ServerRootMonitor;
-import java.io.IOException;
-import javax.management.j2ee.statistics.Statistic;
-import javax.management.j2ee.statistics.Stats;
-
-/**
- */
-public class AMXMonitoringTestBase {
-
-    DomainRoot mDomainRoot;
-    public static final String SERVER_NAME = "server";
-    public static final String APP_NAME = "stateless-simple";
-    public static final String STATELESS_EJB_NAME = "stateless-simple.war";
-
-
-    public AMXMonitoringTestBase(final String host, final int port,
-            final String adminUser, final String adminPassword,
-            final boolean useTLS) throws IOException {
-
-        final AMXConnector ct =
-            new AMXConnector( host, port, adminUser, adminPassword, useTLS );
-        mDomainRoot = ct.getDomainRoot();
-
-    }
-
-    /**
-     *
-     */
-    private MonitoringRoot getMonitoringRoot() {
-        return mDomainRoot.getMonitoringRoot();
-    }
-
-    /**
-     *
-     */
-    public ServerRootMonitor getServerRootMonitor(final String serverName) {
-
-        ServerRootMonitor svrRoot =
-            (serverName != null || "".equals(serverName))
-            ? ( (ServerRootMonitor) getMonitoringRoot().
-                getServerRootMonitorMap().get(serverName) )
-            : ( (ServerRootMonitor) getMonitoringRoot().
-                getServerRootMonitorMap().get(SERVER_NAME) );
-        assert(svrRoot != null) : "Cannot find server with name " +
-            serverName + "!";
-        return svrRoot;
-    }
-
-
-    /**
-     *
-     */
-    public ApplicationMonitor getApplicationMonitor(
-            final String serverName, final String appName) {
-        ApplicationMonitor app =
-            (appName != null || "".equals(appName))
-            ? ( (ApplicationMonitor) getServerRootMonitor(serverName).
-                getApplicationMonitorMap().get(appName) )
-            : ( (ApplicationMonitor) getServerRootMonitor(serverName).
-                getApplicationMonitorMap().get(APP_NAME) );
-        assert(app != null) : "Cannot find application monitor with name " +
-            appName + "!";
-        return app;
-    }
-
-
-    /**
-     *
-     */
-    public void listStats (MonitoringStats ms) {
-        if (ms != null) {
-            Stats stats = ms.getStats();
-            Statistic[] sts = stats.getStatistics();
-            printStats(sts);
-        } else {
-            System.out.println("VERIFY! Stats for " + ms.getName()
-                + " doesn't exist!");
-        }
-    }
-
-
-    /**
-     *
-     */
-    public void printStats(Statistic[] stats) {
-        if (stats == null) {
-            return;
-        }
-
-        for ( int i=0; i < stats.length; i++) {
-            printStat(stats[i]);
-        }
-    }
-
-
-    /**
-     *
-     *
-     */
-    public void printStat(Statistic stat) {
-        if (stat == null) {
-            return;
-        } else {
-            System.out.println("    |    ");
-            System.out.println("    |    ");
-            System.out.println("    --- Stat [" + stat.getName() + "]");
-            System.out.println("         |");
-            System.out.println("         |");
-            System.out.println("         ---- Description: "
-                + stat.getDescription());
-            System.out.println("         ---- Start Time: "
-                + stat.getStartTime());
-            System.out.println("         ---- Last Sample Time: "
-                + stat.getLastSampleTime());
-            System.out.println("         ---- Unit: "
-                + stat.getUnit());
-            System.out.println("\n");
-        }
-    }
-
-    /**
-     *
-     */
-    public static void printArgs(final String [] args) {
-        System.out.println("Printing arguments......");
-        for(int i = 0; i < args.length; i++) {
-            System.out.println("Args[" + i + "]: " + args[i]);
-        }
-    }
-
-    /**
-     *
-     */
-    public void printBlock(final String title) {
-        System.out.println("\n*******************************************");
-        System.out.println("*                                         *");
-        System.out.println("*     " + title + "                        *");
-        System.out.println("*                                         *");
-        System.out.println("*******************************************\n");
-    }
-}
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/README b/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/README
deleted file mode 100644
index f09c6b9..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/README
+++ /dev/null
@@ -1,8 +0,0 @@
-To run tests:
-
-cd mbeanapi/common
-ant all             // compiles common files required
-
-cd mbeanapi/monitoring
-ant all
-
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/build.properties b/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/build.properties
deleted file mode 100644
index 9f2f6c3..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/build.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-<!--
-
-    Copyright (c) 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
-
--->
-
-
-<property name="ee" value="enterprise edition"/>
-<property name="appserver.instance.name" value="server"/>
-
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/build.xml b/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/build.xml
deleted file mode 100644
index 63552c9..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/build.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE project [
-<!--
-
-    Copyright (c) 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
-
--->
-
-<!ENTITY commonSetup SYSTEM "file:./../../../../../config/properties.xml">
-<!ENTITY commonBuild SYSTEM "file:./../../../../../config/common.xml">
-<!ENTITY commonBuild SYSTEM "file:./../../../../../config/run.xml">
-<!ENTITY eeCommonBuild SYSTEM "file:./../../../../../config/ee-common.xml">
-<!ENTITY testproperties SYSTEM "file:./build.properties">
-]>
-
-<project name="ee-synchronization" default="usage" basedir=".">
-
-    &commonSetup;
-    &commonBuild;
-    &eeCommonBuild;
-    &testproperties;
-
-    <target name="all" depends="setup, run-tests, cleanup"/>
-
-    <target name="setup">
-        <antcall target="deploy-apps"/>
-        <antcall target="create-connection-pools"/>
-    </target>
-
-    <target name="deploy-apps">
-        <echo message="Deploying ${env.S1AS_HOME}/samples/ejb/stateless/apps/simple/stateless-simple.ear "/>
-        <antcall target="deploy-common">
-            <param name="deployed.app" value="${env.S1AS_HOME}/samples/ejb/stateless/apps/simple/stateless-simple.ear"/>
-        </antcall>
-    </target>
-
-    <target name="undeploy-apps">
-        <echo message="Un deploying stateless-simple"/>
-        <antcall target="undeploy-common">
-            <param name="deployedapp.name" value="stateless-simple"/>
-        </antcall>
-    </target>
-
-    <target name="create-connection-pools">
-        <echo message="creating a connection pool mbeanapi-test-conn-pool"/>
-        <antcall target="create-connector-connpool">
-            <param name="ra.name" value="stateless-simple#jdbcra"/>
-            <param name="connection.defname" value="javax.sql.DataSource"/>
-            <param name="connector.conpool.name" value="mbeanapi-test-conn-pool"/>
-        </antcall>
-    </target>
-
-    <target name="remove-connection-pools">
-        <echo message="deleting connection pool mbeanapi-test-conn-pool"/>
-        <antcall target="delete-connector-connpool-common">
-            <param name="connector.conpool.name" value="mbeanapi-test-conn-pool"/>
-        </antcall>
-    </target>
-
-    <target name="run-tests" depends="setup">
-        <antcall target="ejb">
-          <param name="ejb.target" value="all"/>
-        </antcall>
-        <antcall target="web">
-          <param name="web.target" value="all"/>
-        </antcall>
-        <antcall target="jdbc">
-          <param name="jdbc.target" value="all"/>
-        </antcall>
-        <antcall target="misc">
-          <param name="misc.target" value="all"/>
-        </antcall>
-    </target>
-
-    <target name="ejb">
-        <record name="ejb.output" action="start"/>
-            <ant dir="ejb" target="${ejb.target}"/>
-        <record name="ejb.output" action="stop"/>
-    </target>
-
-    <target name="web">
-        <record name="web.output" action="start"/>
-            <ant dir="web" target="${web.target}"/>
-        <record name="web.output" action="stop"/>
-    </target>
-
-    <target name="jdbc">
-        <record name="jdbc.output" action="start"/>
-            <ant dir="jdbc" target="${jdbc.target}"/>
-        <record name="jdbc.output" action="stop"/>
-    </target>
-
-    <target name="misc">
-        <record name="misc.output" action="start"/>
-            <ant dir="misc" target="${misc.target}"/>
-        <record name="misc.output" action="stop"/>
-    </target>
-
-    <target name="cleanup">
-        <antcall target="undeploy-apps"/>
-        <antcall target="remove-connection-pools"/>
-    </target>
-
-    <target name="usage">
-        <antcall target="usage-common"/>
-    </target>
-
-</project>
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/connector/ConnectorMonitoring.java b/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/connector/ConnectorMonitoring.java
deleted file mode 100644
index 6d2dcf2..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/connector/ConnectorMonitoring.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (c) 2003, 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
- */
-
-package com.sun.s1asdev.admin.mbeanapi.monitoring.connector;
-
-import com.sun.appserv.management.monitor.ConnectorConnectionPoolMonitor;
-import java.io.IOException;
-
-import java.util.Map;
-import java.util.Set;
-import java.util.Iterator;
-import java.util.Collection;
-
-import com.sun.appserv.management.monitor.ApplicationMonitor;
-import com.sun.appserv.management.monitor.WebModuleMonitor;
-import com.sun.appserv.management.monitor.ServletMonitor;
-import com.sun.appserv.management.monitor.WebModuleVirtualServerMonitor;
-import com.sun.appserv.management.monitor.NativeWebCoreVirtualServerRequestMonitor;
-import com.sun.appserv.management.monitor.statistics.NativeWebCoreVirtualServerRequestStats;
-
-import com.sun.appserv.management.util.misc.ExceptionUtil;
-
-import com.sun.appserv.management.util.stringifier.SmartStringifier;
-import com.sun.appserv.management.util.stringifier.StringifierRegistryIniterImpl;
-import com.sun.appserv.management.util.stringifier.StringifierRegistryImpl;
-
-import com.sun.enterprise.admin.mbeanapi.common.AMXConnector;
-import com.sun.enterprise.admin.mbeanapi.common.AMXMonitoringTestBase;
-
-
-
-/**
- * This test prints the statistics for ejb module and stateless bean
- *
- *  ConnectorMonitoring</B>
- *
- * @author <a href=mailto:satish.viswanatham@sun.com>Satish Viswanatham</a>
- *         Date: Aug 24, 2004
- * @version $Revision: 1.1 $
- */
-public class ConnectorMonitoring extends AMXMonitoringTestBase {
-
-    private String serverName;
-    private static String SERVLETS = " - SERVLETS -";
-    private static String VS = "VIRTUAL SERVER";
-
-    public ConnectorMonitoring(final String host, final int port, final String serverName,
-    final String adminUser, final String adminPassword,
-    final boolean useTLS) throws IOException {
-        super(host, port, adminUser,adminPassword,useTLS);
-        this.serverName = serverName;
-    }
-
-
-    public void  test() {
-        Map connMap =
-            getServerRootMonitor(serverName).
-                getConnectorConnectionPoolMonitorMap();
-        assert(connMap.size() > 0) :
-            "The connection pool monitor map is " + connMap.size();
-        for(Iterator itr = connMap.values().iterator(); itr.hasNext();) {
-            ConnectorConnectionPoolMonitor connMonitor =
-                (ConnectorConnectionPoolMonitor) itr.next();
-            System.out.println("\nConnectorConnectionPoolMonitor [" +
-                connMonitor.getName() + "]");
-            printStats(connMonitor.getStats().getStatistics());
-        }
-        /*
-        HTTPServiceMonitor httpService =
-        getServerRootMonitor(serverName).getHTTPServiceMonitor();
-        assert (httpService != null) : "The http service monitor is null!";
-        Map vsMap = httpService.getHTTPServiceVirtualServerMonitorMap();
-        assert (vsMap.size() > 0) : "The http service monitor map is empty!";
-        for(Iterator itr = vsMap.values().iterator(); itr.hasNext();) {
-            HTTPServiceVirtualServerMonitor vsMtr =
-            (HTTPServiceVirtualServerMonitor) vsMap.get(itr.next());
-            assert (vsMtr != null) : "The http virtual server monitor is null!";
-            NativeWebCoreVirtualServerRequestMonitor rMtr =
-            vsMtr.getNativeWebCoreVirtualServerRequestMonitor();
-            NativeWebCoreVirtualServerRequestStats wcStats =
-            rMtr.getNativeWebCoreVirtualServerRequestStats();
-            printStats(wcStats.getStatistics());
-        }
-         **/
-    }
-
-
-    /**
-     *
-     */
-    public static void   main( final String[] args ) {
-        new StringifierRegistryIniterImpl( StringifierRegistryImpl.DEFAULT );
-
-        try {
-            ConnectorMonitoring connMtr = new ConnectorMonitoring(
-            System.getProperty("HOST", "hoyas.red.iplanet.com"),
-            Integer.parseInt(System.getProperty("PORT","8686")), args[0],
-            System.getProperty("ADMIN_USER", "admin"),
-            System.getProperty("ADMIN_PASSWORD", "adminadmin"),
-            Boolean.getBoolean(System.getProperty("USE_TLS", "false")));
-
-            ConnectorMonitoring.printArgs(args);
-
-            connMtr.test();
-
-        } catch( Throwable t ) {
-            ExceptionUtil.getRootCause( t ).printStackTrace();
-        }
-    }
-
-}
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/connector/build.properties b/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/connector/build.properties
deleted file mode 100644
index 895c078..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/connector/build.properties
+++ /dev/null
@@ -1,55 +0,0 @@
-#
-# Copyright (c) 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
-#
-
-#
-# The environment variables for compiling and running the tests.
-#
-src.dir=
-
-#
-# Set location for jmx.jar either from install or build.
-#
-jmx.jar=
-
-#
-# Classpath dependent variables
-#
-module.publish.home=${src.dir}/publish/JDK1.4_DBG.OBJ
-mbeanapi.jar=${module.publish.home}/admin-core/mbeanapi/lib/mbeanapi.jar
-mbeanapi-impl.jar=${module.publish.home}/admin/mbeanapi-impl/lib/mbeanapi-impl.jar
-jmx-ri.jar=${module.publish.home}/jmx/lib/jmxri.jar
-jmx-remote.jar=${module.publish.home}/rjmx-ri/jmxremote.jar
-jmx-remote_optional.jar=${module.publish.home}/rjmx-ri/jmxremote_optional.jar
-appserv-commons.jar=${module.publish.home}/appserv-commons/lib/appserv-commons.jar
-mgmt-api.jar=${module.publish.home}/management-api/lib/management-api.jar
-
-#
-# The instance that the web module or application is deployed on. If this is
-# null or "" then the default server instance "server" is assumed.
-#
-instance.name=server
-
-#
-# The application that the web module lives in. This is only relevant if the
-# web module to be tested is embedded within an application.
-#
-application.name=stateless-simple
-
-#
-# The embedded or standalone web module.
-#
-web.module.name=stateless-simple.war
-
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/connector/build.xml b/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/connector/build.xml
deleted file mode 100644
index 663db17..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/connector/build.xml
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-
-    Copyright (c) 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
-
--->
-
-<project name="MBeanApi Monitoring tests" default="all" basedir=".">
-
-<property name="testsRoot" value="."/>
-<property name="build" value="${testsRoot}/build"/>
-<property file="./bootstrap.subcomponent.properties"/>
-<property file="./../../../../../../../bootstrap/bootstrap.properties"/>
-<property file="./../../../../../../../appserv/build.properties"/>
-<property file="./build.properties"/>
-
-
-    <path id="compile.classpath">
-        <pathelement location="${jmxri.jar}"/>
-        <pathelement location="${mbeanapi.jar}"/>
-        <pathelement location="${mbeanapi-impl.jar}"/>
-        <pathelement location="${jmx.jar}"/>
-    </path>
-
-    <path id="run.classpath">
-        <pathelement location="${jmx-ri.jar}"/>
-        <pathelement location="${mbeanapi.jar}"/>
-        <pathelement location="${mbeanapi-impl.jar}"/>
-        <pathelement location="../../common/build"/>
-        <pathelement location="${jmx-remote.jar}"/>
-        <pathelement location="${jmx-remote_optional.jar}"/>
-        <pathelement location="${appserv-commons.jar}"/>
-        <pathelement location="${mgmt-api.jar}"/>
-        <pathelement location="${jmx.jar}"/>
-        <pathelement location="build"/>
-    </path>
-
-    <target name="init" description="MBeanapi Tests initialization">
-        <mkdir dir="${build}"/>
-    </target>
-
-    <!-- all -->
-    <target name="all" depends="build"
-        description="Build entire component">
-        <antcall target="connector-mtr-test"/>
-    </target>
-
-    <!-- build -->
-    <target name="build" depends="compile"
-        description="Build entire component" />
-
-    <!-- compile-common -->
-    <target name="compile-common" depends="init">
-        <javac  srcdir="${src.dir}/appserv-tests/devtests/ee/admin/mbeanapi/common"
-                destdir="${build}"
-                debug="${javac.debug}"
-                optimize="${javac.optimize}"
-                source="${javac.source}"
-                deprecation="${javac.deprecation}"
-                failonerror="true">
-            <classpath refid="compile.classpath"/>
-            <include name="**/AMXMonitoringTestBase.java"/>
-        </javac>
-    </target>
-
-    <!-- compile -->
-    <target name="compile" depends="init, compile-common">
-        <javac  srcdir="${src.dir}/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/connector"
-                destdir="${build}"
-                debug="${javac.debug}"
-                optimize="${javac.optimize}"
-                source="${javac.source}"
-                deprecation="${javac.deprecation}"
-                failonerror="true">
-            <classpath refid="compile.classpath"/>
-            <include name="**/*.java"/>
-        </javac>
-    </target>
-
-    <!-- clean -->
-    <target name="clean" description="clean">
-        <delete dir="${build}"/>
-    </target>
-
-    <!-- EJB pool monitoring Test Case -->
-    <target name="connector-mtr-test">
-        <antcall target="test-common">
-            <param name="test.class"
-               value="com.sun.s1asdev.admin.mbeanapi.monitoring.connector.ConnectorMonitoring"/>
-       </antcall>
-    </target>
-
-    <target name="test-common">
-        <java classname="${test.class}" failonerror="true" fork="true">
-            <classpath>
-                <path refid="run.classpath"/>
-            </classpath>
-        <jvmarg value="-enableassertions"/>
-        <arg value="${instance.name}" />
-        <arg value="${application.name}" />
-        <arg value="${web.module.name}" />
-       </java>
-    </target>
-
-
-</project>
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/ejb/EJBMonitoring.java b/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/ejb/EJBMonitoring.java
deleted file mode 100755
index 1a6df95..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/ejb/EJBMonitoring.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (c) 2003, 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
- */
-
-package com.sun.s1asdev.admin.mbeanapi.monitoring.ejb;
-
-import java.io.IOException;
-
-import java.util.Map;
-import java.util.Set;
-import java.util.Iterator;
-
-import javax.management.j2ee.statistics.Statistic;
-import javax.management.j2ee.statistics.Stats;
-
-import com.sun.appserv.management.DomainRoot;
-import com.sun.appserv.management.monitor.MonitoringRoot;
-import com.sun.appserv.management.monitor.ServerRootMonitor;
-import com.sun.appserv.management.monitor.ApplicationMonitor;
-import com.sun.appserv.management.monitor.EJBModuleMonitor;
-import com.sun.appserv.management.monitor.EJBMonitor;
-import com.sun.appserv.management.monitor.BeanPoolMonitor;
-import com.sun.appserv.management.monitor.BeanCacheMonitor;
-import com.sun.appserv.management.monitor.BeanMethodMonitor;
-import com.sun.appserv.management.monitor.MonitoringStats;
-
-import com.sun.appserv.management.util.misc.ExceptionUtil;
-
-import com.sun.appserv.management.util.stringifier.SmartStringifier;
-import com.sun.appserv.management.util.stringifier.StringifierRegistryIniterImpl;
-import com.sun.appserv.management.util.stringifier.StringifierRegistryImpl;
-import com.sun.enterprise.admin.mbeanapi.common.AMXConnector;
-
-
-/**
- * This test print the statistics for ejb module and stateless bean
- *
- *  EJBMonitoring</B>
- *
- * @author <a href=mailto:satish.viswanatham@sun.com>Satish Viswanatham</a>
- *         Date: Aug 24, 2004
- * @version $Revision: 1.5 $
- */
-public class EJBMonitoring {
-
-    private final DomainRoot    mDomainRoot;
-
-    private String SERVER_NAME = "server";
-
-    //private String APP_NAME = "cmpcustomer1";
-    //private String APP_NAME = "bmp-simple";
-    private String APP_NAME = "stateless-simple";
-
-    private String STATELESS_EJB_NAME = "stateless-simpleEjb_jar";
-
-    public void  testEJBPoolStats()
-    {
-        MonitoringRoot monitorRoot = mDomainRoot.getMonitoringRoot() ;
-        assert(monitorRoot !=null);
-        ServerRootMonitor svrRootMtr = (ServerRootMonitor) monitorRoot.
-                        getServerRootMonitorMap().  get(SERVER_NAME);
-        Map appsMtrMgr = svrRootMtr.getApplicationMonitorMap();
-
-        ApplicationMonitor appMtr =
-            (ApplicationMonitor) appsMtrMgr.get(APP_NAME);
-
-        Map ejbMgr = appMtr.getEJBModuleMonitorMap();
-
-        Stats stats = null;
-        Statistic[] sts = null;
-
-        System.out.println(" size  is " + ejbMgr.size());
-        Iterator itr = ejbMgr.values().iterator();
-
-        while (itr.hasNext()) {
-            Object tmp = itr.next();
-            System.out.println("Ejb is " + tmp);
-            EJBModuleMonitor beanMgr =  (EJBModuleMonitor) tmp;
-
-            Map beans = beanMgr.getEJBMonitorMap();
-
-            Iterator it = beans.values().iterator();
-
-            while (it.hasNext()) {
-                EJBMonitor em = (EJBMonitor) it.next();
-                listStats(em);
-
-                Map methodMap = em.getBeanMethodMonitorMap();
-                itr = methodMap.values().iterator();
-
-                while (itr.hasNext()) {
-                    Object o = itr.next();
-                    System.out.println(
-                        " Looking at stats for this method " + o);
-                    BeanMethodMonitor bmm = (BeanMethodMonitor) o;
-                    listStats(bmm);
-
-                }
-            }
-
-            BeanPoolMonitor bPool = beanMgr.getBeanPoolMonitor(
-                                STATELESS_EJB_NAME);
-            if (bPool == null) {
-                System.out.println("Error: BeanPool monitor is null");
-            } else {
-                listStats(bPool);
-            }
-
-            BeanCacheMonitor bCache = beanMgr.getBeanCacheMonitor(
-                                STATELESS_EJB_NAME);
-            if (bCache == null) {
-                System.out.println("Error: BeanCache monitor is null");
-            } else {
-                listStats(bCache);
-            }
-
-       }
-
-
-    }
-
-    public void listStats (MonitoringStats ms)
-    {
-        Stats stats = ms.getStats();
-        Statistic[] sts = stats.getStatistics();
-        printStats(sts);
-    }
-
-    public void printStats(Statistic[] stats)
-    {
-        if (stats == null)
-            return;
-
-        for ( int i=0; i < stats.length; i++)
-        {
-            printStat(stats[i]);
-        }
-
-    }
-
-    public void printStat(Statistic stat)
-    {
-        if (stat == null)
-            return;
-        else
-            System.out.println(" Stat name is " + stat.getName() +
-                " description: " + stat.getDescription() + " start time "
-                + stat.getStartTime() + " last sample time "
-                + stat.getLastSampleTime() + " unit " + stat.getUnit());
-    }
-
-    public EJBMonitoring(final String host,
-                                   final int port,
-                                   final String adminUser,
-                                   final String adminPassword,
-                                   final boolean useTLS)
-                                    throws IOException
-    {
-        final AMXConnector ct    =
-            new AMXConnector( host, port, adminUser, adminPassword, useTLS );
-
-        mDomainRoot    = ct.getDomainRoot();
-
-    }
-
-
-    public static void   main( final String[] args )
-    {
-        new StringifierRegistryIniterImpl( StringifierRegistryImpl.DEFAULT );
-
-        try
-        {
-            EJBMonitoring ejbMtr = new EJBMonitoring(
-            System.getProperty("HOST", "localhost"),
-            Integer.parseInt(System.getProperty("PORT","8686")),
-            System.getProperty("ADMIN_USER", "admin"),
-            System.getProperty("ADMIN_PASSWORD", "adminadmin"),
-            Boolean.getBoolean(System.getProperty("USE_TLS", "false")));
-
-           ejbMtr.testEJBPoolStats();
-        }
-        catch( Throwable t )
-        {
-            ExceptionUtil.getRootCause( t ).printStackTrace();
-        }
-    }
-}
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/ejb/build.properties b/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/ejb/build.properties
deleted file mode 100755
index b1a1948..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/ejb/build.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# Copyright (c) 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
-#
-
-
-
-src.dir=.
-module.publish.home=../../../../../../${publish.home}
-mbeanapi.jar=${module.publish.home}/admin-core/mbeanapi/lib/mbeanapi.jar
-mbeanapi-impl.jar=${module.publish.home}/admin/mbeanapi-impl/lib/mbeanapi-impl.jar
-jmx-ri.jar=${module.publish.home}/jmx/lib/jmxri.jar
-jmx-remote.jar=${module.publish.home}/rjmx-ri/jmxremote.jar
-jmx-remote_optional.jar=${module.publish.home}/rjmx-ri/jmxremote_optional.jar
-appserv-commons.jar=${module.publish.home}/appserv-commons/lib/appserv-commons.jar
-mgmt-api.jar=${module.publish.home}/management-api/lib/management-api.jar
-
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/ejb/build.xml b/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/ejb/build.xml
deleted file mode 100755
index 322e1f7..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/ejb/build.xml
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-
-    Copyright (c) 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
-
--->
-
-<project name="MBeanApi Monitoring tests" default="all" basedir=".">
-
-<property name="testsRoot" value="."/>
-<property name="build" value="${testsRoot}/build"/>
-<property file="./bootstrap.subcomponent.properties"/>
-<property file="./../../../../../../../bootstrap/bootstrap.properties"/>
-<property file="./../../../../../../../appserv/build.properties"/>
-<property file="./build.properties"/>
-
-
-    <path id="compile.classpath">
-        <pathelement location="${jmxri.jar}"/>
-        <pathelement location="${mbeanapi.jar}"/>
-        <pathelement location="${mbeanapi-impl.jar}"/>
-        <pathelement location="../../common/build"/>
-    </path>
-
-    <path id="run.classpath">
-        <pathelement location="${jmx-ri.jar}"/>
-        <pathelement location="${mbeanapi.jar}"/>
-        <pathelement location="${mbeanapi-impl.jar}"/>
-        <pathelement location="../../common/build"/>
-        <pathelement location="${jmx-remote.jar}"/>
-        <pathelement location="${jmx-remote_optional.jar}"/>
-        <pathelement location="${appserv-commons.jar}"/>
-        <pathelement location="${mgmt-api.jar}"/>
-        <pathelement location="build"/>
-    </path>
-
-    <target name="init" description="MBeanapi Tests initialization">
-        <mkdir dir="${build}"/>
-    </target>
-
-    <!-- all -->
-    <target name="all" depends="build"
-        description="Build entire component">
-        <antcall target="ejb-pool-mtr-test"/>
-    </target>
-
-    <!-- build -->
-    <target name="build" depends="compile"
-        description="Build entire component" />
-
-    <!-- compile -->
-    <target name="compile" depends="init">
-        <javac  srcdir="${src.dir}"
-                destdir="${build}"
-                debug="${javac.debug}"
-                optimize="${javac.optimize}"
-                source="${javac.source}"
-                deprecation="${javac.deprecation}"
-                failonerror="true">
-            <classpath refid="compile.classpath"/>
-            <include name="**/*.java"/>
-        </javac>
-    </target>
-
-    <!-- clean -->
-    <target name="clean" description="clean">
-        <delete dir="${build}"/>
-    </target>
-
-    <!-- EJB pool monitoring Test Case -->
-    <target name="ejb-pool-mtr-test">
-        <antcall target="test-common">
-            <param name="test.class"
-               value="com.sun.s1asdev.admin.mbeanapi.monitoring.ejb.EJBMonitoring"/>
-       </antcall>
-    </target>
-
-    <target name="test-common">
-        <java classname="${test.class}" failonerror="true" fork="true">
-            <classpath>
-                <path refid="run.classpath"/>
-            </classpath>
-        <!--jvmarg value="-Dcom.sun.aas.instanceRoot=/tmp"/-->
-       </java>
-    </target>
-
-
-</project>
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/http/HTTPMonitoring.java b/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/http/HTTPMonitoring.java
deleted file mode 100644
index 8bea846..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/http/HTTPMonitoring.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (c) 2003, 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
- */
-
-package com.sun.s1asdev.admin.mbeanapi.monitoring.http;
-
-import com.sun.appserv.management.monitor.HTTPServiceMonitor;
-import com.sun.appserv.management.monitor.HTTPServiceVirtualServerMonitor;
-import java.io.IOException;
-
-import java.util.Map;
-import java.util.Set;
-import java.util.Iterator;
-import java.util.Collection;
-
-import com.sun.appserv.management.monitor.ApplicationMonitor;
-import com.sun.appserv.management.monitor.WebModuleMonitor;
-import com.sun.appserv.management.monitor.ServletMonitor;
-import com.sun.appserv.management.monitor.WebModuleVirtualServerMonitor;
-import com.sun.appserv.management.monitor.NativeWebCoreVirtualServerRequestMonitor;
-import com.sun.appserv.management.monitor.statistics.NativeWebCoreVirtualServerRequestStats;
-
-import com.sun.appserv.management.util.misc.ExceptionUtil;
-
-import com.sun.appserv.management.util.stringifier.SmartStringifier;
-import com.sun.appserv.management.util.stringifier.StringifierRegistryIniterImpl;
-import com.sun.appserv.management.util.stringifier.StringifierRegistryImpl;
-
-import com.sun.enterprise.admin.mbeanapi.common.AMXConnector;
-import com.sun.enterprise.admin.mbeanapi.common.AMXMonitoringTestBase;
-
-
-
-/**
- * This test prints the statistics for ejb module and stateless bean
- *
- *  HTTPMonitoring</B>
- *
- * @author <a href=mailto:satish.viswanatham@sun.com>Satish Viswanatham</a>
- *         Date: Aug 24, 2004
- * @version $Revision: 1.1 $
- */
-public class HTTPMonitoring extends AMXMonitoringTestBase {
-
-    private String serverName;
-    private static String SERVLETS = " - SERVLETS -";
-    private static String VS = "VIRTUAL SERVER";
-
-    public HTTPMonitoring(final String host, final int port, final String serverName,
-            final String adminUser, final String adminPassword,
-            final boolean useTLS) throws IOException {
-        super(host, port, adminUser,adminPassword,useTLS);
-        this.serverName = serverName;
-    }
-
-
-    public void  test() {
-        HTTPServiceMonitor httpService =
-            getServerRootMonitor(serverName).getHTTPServiceMonitor();
-        assert (httpService != null) : "The http service monitor is null!";
-        Map vsMap = httpService.getHTTPServiceVirtualServerMonitorMap();
-        assert (vsMap.size() > 0) : "The http service monitor map is empty!";
-        for(Iterator itr = vsMap.values().iterator(); itr.hasNext();) {
-            HTTPServiceVirtualServerMonitor vsMtr =
-                (HTTPServiceVirtualServerMonitor) vsMap.get(itr.next());
-            assert (vsMtr != null) : "The http virtual server monitor is null!";
-            NativeWebCoreVirtualServerRequestMonitor rMtr =
-                vsMtr.getNativeWebCoreVirtualServerRequestMonitor();
-            NativeWebCoreVirtualServerRequestStats wcStats =
-                rMtr.getNativeWebCoreVirtualServerRequestStats();
-            printStats(wcStats.getStatistics());
-        }
-    }
-
-
-    /**
-     *
-     */
-    public static void   main( final String[] args ) {
-        new StringifierRegistryIniterImpl( StringifierRegistryImpl.DEFAULT );
-
-        try {
-            HTTPMonitoring httpMtr = new HTTPMonitoring(
-                System.getProperty("HOST", "localhost"),
-                Integer.parseInt(System.getProperty("PORT","8686")), args[0],
-                System.getProperty("ADMIN_USER", "admin"),
-                System.getProperty("ADMIN_PASSWORD", "adminadmin"),
-                Boolean.getBoolean(System.getProperty("USE_TLS", "false")));
-
-            HTTPMonitoring.printArgs(args);
-
-            httpMtr.test();
-
-        } catch( Throwable t ) {
-            ExceptionUtil.getRootCause( t ).printStackTrace();
-        }
-    }
-
-}
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/http/build.properties b/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/http/build.properties
deleted file mode 100644
index 895c078..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/http/build.properties
+++ /dev/null
@@ -1,55 +0,0 @@
-#
-# Copyright (c) 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
-#
-
-#
-# The environment variables for compiling and running the tests.
-#
-src.dir=
-
-#
-# Set location for jmx.jar either from install or build.
-#
-jmx.jar=
-
-#
-# Classpath dependent variables
-#
-module.publish.home=${src.dir}/publish/JDK1.4_DBG.OBJ
-mbeanapi.jar=${module.publish.home}/admin-core/mbeanapi/lib/mbeanapi.jar
-mbeanapi-impl.jar=${module.publish.home}/admin/mbeanapi-impl/lib/mbeanapi-impl.jar
-jmx-ri.jar=${module.publish.home}/jmx/lib/jmxri.jar
-jmx-remote.jar=${module.publish.home}/rjmx-ri/jmxremote.jar
-jmx-remote_optional.jar=${module.publish.home}/rjmx-ri/jmxremote_optional.jar
-appserv-commons.jar=${module.publish.home}/appserv-commons/lib/appserv-commons.jar
-mgmt-api.jar=${module.publish.home}/management-api/lib/management-api.jar
-
-#
-# The instance that the web module or application is deployed on. If this is
-# null or "" then the default server instance "server" is assumed.
-#
-instance.name=server
-
-#
-# The application that the web module lives in. This is only relevant if the
-# web module to be tested is embedded within an application.
-#
-application.name=stateless-simple
-
-#
-# The embedded or standalone web module.
-#
-web.module.name=stateless-simple.war
-
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/http/build.xml b/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/http/build.xml
deleted file mode 100644
index a8ba55b..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/http/build.xml
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-
-    Copyright (c) 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
-
--->
-
-<project name="MBeanApi Monitoring tests" default="all" basedir=".">
-
-<property name="testsRoot" value="."/>
-<property name="build" value="${testsRoot}/build"/>
-<property file="./bootstrap.subcomponent.properties"/>
-<property file="./../../../../../../../bootstrap/bootstrap.properties"/>
-<property file="./../../../../../../../appserv/build.properties"/>
-<property file="./build.properties"/>
-
-
-    <path id="compile.classpath">
-        <pathelement location="${jmxri.jar}"/>
-        <pathelement location="${mbeanapi.jar}"/>
-        <pathelement location="${mbeanapi-impl.jar}"/>
-        <pathelement location="${jmx.jar}"/>
-    </path>
-
-    <path id="run.classpath">
-        <pathelement location="${jmx-ri.jar}"/>
-        <pathelement location="${mbeanapi.jar}"/>
-        <pathelement location="${mbeanapi-impl.jar}"/>
-        <pathelement location="../../common/build"/>
-        <pathelement location="${jmx-remote.jar}"/>
-        <pathelement location="${jmx-remote_optional.jar}"/>
-        <pathelement location="${appserv-commons.jar}"/>
-        <pathelement location="${mgmt-api.jar}"/>
-        <pathelement location="${jmx.jar}"/>
-        <pathelement location="build"/>
-    </path>
-
-    <target name="init" description="MBeanapi Tests initialization">
-        <mkdir dir="${build}"/>
-    </target>
-
-    <!-- all -->
-    <target name="all" depends="build"
-        description="Build entire component">
-        <antcall target="http-mtr-test"/>
-    </target>
-
-    <!-- build -->
-    <target name="build" depends="compile"
-        description="Build entire component" />
-
-    <!-- compile-common -->
-    <target name="compile-common" depends="init">
-        <javac  srcdir="${src.dir}/appserv-tests/devtests/ee/admin/mbeanapi/common"
-                destdir="${build}"
-                debug="${javac.debug}"
-                optimize="${javac.optimize}"
-                source="${javac.source}"
-                deprecation="${javac.deprecation}"
-                failonerror="true">
-            <classpath refid="compile.classpath"/>
-            <include name="**/AMXMonitoringTestBase.java"/>
-        </javac>
-    </target>
-
-    <!-- compile -->
-    <target name="compile" depends="init, compile-common">
-        <javac  srcdir="${src.dir}/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/http"
-                destdir="${build}"
-                debug="${javac.debug}"
-                optimize="${javac.optimize}"
-                source="${javac.source}"
-                deprecation="${javac.deprecation}"
-                failonerror="true">
-            <classpath refid="compile.classpath"/>
-            <include name="**/*.java"/>
-        </javac>
-    </target>
-
-    <!-- clean -->
-    <target name="clean" description="clean">
-        <delete dir="${build}"/>
-    </target>
-
-    <!-- EJB pool monitoring Test Case -->
-    <target name="http-mtr-test">
-        <antcall target="test-common">
-            <param name="test.class"
-               value="com.sun.s1asdev.admin.mbeanapi.monitoring.http.HTTPMonitoring"/>
-       </antcall>
-    </target>
-
-    <target name="test-common">
-        <java classname="${test.class}" failonerror="true" fork="true">
-            <classpath>
-                <path refid="run.classpath"/>
-            </classpath>
-        <jvmarg value="-enableassertions"/>
-        <arg value="${instance.name}" />
-        <arg value="${application.name}" />
-        <arg value="${web.module.name}" />
-       </java>
-    </target>
-
-
-</project>
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/jdbc/JDBCMonitoring.java b/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/jdbc/JDBCMonitoring.java
deleted file mode 100644
index 7d8647c..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/jdbc/JDBCMonitoring.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright (c) 2003, 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
- */
-
-package com.sun.s1asdev.admin.mbeanapi.monitoring.jdbc;
-
-import java.io.IOException;
-
-import java.util.Map;
-import java.util.Set;
-import java.util.Iterator;
-
-import javax.management.j2ee.statistics.Statistic;
-import javax.management.j2ee.statistics.Stats;
-
-import com.sun.appserv.management.DomainRoot;
-import com.sun.appserv.management.monitor.MonitoringRoot;
-import com.sun.appserv.management.monitor.ServerRootMonitor;
-import com.sun.appserv.management.monitor.JDBCConnectionPoolMonitor;
-import com.sun.appserv.management.monitor.ConnectorConnectionPoolMonitor;
-import com.sun.appserv.management.monitor.MonitoringStats;
-
-import com.sun.appserv.management.util.misc.ExceptionUtil;
-
-import com.sun.appserv.management.util.stringifier.SmartStringifier;
-import com.sun.appserv.management.util.stringifier.StringifierRegistryIniterImpl;
-import com.sun.appserv.management.util.stringifier.StringifierRegistryImpl;
-import com.sun.enterprise.admin.mbeanapi.common.AMXConnector;
-
-
-/**
- * This test print the statistics for jdbc and connector connection pools
- *
- *  JDBCMonitoring</B>
- *
- * @author <a href=mailto:satish.viswanatham@sun.com>Satish Viswanatham</a>
- *         Date: Aug 24, 2004
- * @version $Revision: 1.3 $
- */
-public class JDBCMonitoring {
-
-    private static DomainRoot    mDomainRoot;
-
-    private static String SERVER_NAME = "server";
-
-    public void  testCCPoolStats( ServerRootMonitor svrRootMtr)
-    {
-
-        Map cpMtrMgr =   svrRootMtr.getConnectorConnectionPoolMonitorMap();
-        System.out.println("connector connection pool size  is " +
-                        cpMtrMgr.size());
-        Iterator itr = cpMtrMgr.values().iterator();
-        while (itr.hasNext()) {
-            Object o = itr.next();
-            System.out.println(" Connector Connection pool  is " + o);
-            ConnectorConnectionPoolMonitor cPool  =
-                    (ConnectorConnectionPoolMonitor)o;
-            listStat(cPool);
-       }
-
-    }
-
-    public void  testJDBCPoolStats( ServerRootMonitor svrRootMtr)
-    {
-
-        Map cpMtrMgr =   svrRootMtr.getJDBCConnectionPoolMonitorMap();
-        System.out.println("jdbc connection pool size  is " + cpMtrMgr.size());
-        Iterator itr = cpMtrMgr.values().iterator();
-        while (itr.hasNext()) {
-            Object o = itr.next();
-            System.out.println(" Connection pool  is " + o);
-            JDBCConnectionPoolMonitor cPool  = (JDBCConnectionPoolMonitor)o;
-            listStat(cPool);
-       }
-
-    }
-
-    public void listStat(MonitoringStats mtr)
-    {
-        if (mtr == null) {
-            System.out.println("Monitoring stats is null");
-        } else {
-            listStats(mtr);
-        }
-    }
-
-    public void listStats(MonitoringStats ms)
-    {
-        Stats stats = ms.getStats();
-        Statistic[] sts = stats.getStatistics();
-        printStats(sts);
-    }
-
-    public void printStats(Statistic[] stats)
-    {
-        if (stats == null)
-            return;
-
-        for ( int i=0; i < stats.length; i++)
-        {
-            printStat(stats[i]);
-        }
-
-    }
-
-    public void printStat(Statistic stat)
-    {
-        if (stat == null)
-            return;
-        else
-            System.out.println(" Stat name is " + stat.getName() +
-                " description: " + stat.getDescription() + " start time "
-                + stat.getStartTime() + " last sample time "
-                + stat.getLastSampleTime() + " unit " + stat.getUnit());
-    }
-
-    public JDBCMonitoring(final String host,
-                                   final int port,
-                                   final String adminUser,
-                                   final String adminPassword,
-                                   final boolean useTLS)
-                                    throws IOException
-    {
-        final AMXConnector ct    =
-            new AMXConnector( host, port, adminUser, adminPassword, useTLS );
-
-        mDomainRoot    = ct.getDomainRoot();
-
-    }
-
-
-    public static void   main( final String[] args )
-    {
-        new StringifierRegistryIniterImpl( StringifierRegistryImpl.DEFAULT );
-
-        try
-        {
-            JDBCMonitoring jdbcMtr = new JDBCMonitoring(
-                System.getProperty("HOST", "localhost"),
-                Integer.parseInt(System.getProperty("PORT","8686")),
-                System.getProperty("ADMIN_USER", "admin"),
-                System.getProperty("ADMIN_PASSWORD", "adminadmin"),
-                Boolean.getBoolean(System.getProperty("USE_TLS", "false")));
-
-            MonitoringRoot monitorRoot = mDomainRoot.getMonitoringRoot() ;
-            assert(monitorRoot !=null);
-            ServerRootMonitor svrRootMtr = (ServerRootMonitor) monitorRoot.
-                        getServerRootMonitorMap().  get(SERVER_NAME);
-
-            jdbcMtr.testJDBCPoolStats(svrRootMtr);
-            jdbcMtr.testCCPoolStats(svrRootMtr);
-        }
-        catch( Throwable t )
-        {
-            ExceptionUtil.getRootCause( t ).printStackTrace();
-        }
-    }
-}
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/jdbc/build.properties b/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/jdbc/build.properties
deleted file mode 100644
index b1a1948..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/jdbc/build.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# Copyright (c) 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
-#
-
-
-
-src.dir=.
-module.publish.home=../../../../../../${publish.home}
-mbeanapi.jar=${module.publish.home}/admin-core/mbeanapi/lib/mbeanapi.jar
-mbeanapi-impl.jar=${module.publish.home}/admin/mbeanapi-impl/lib/mbeanapi-impl.jar
-jmx-ri.jar=${module.publish.home}/jmx/lib/jmxri.jar
-jmx-remote.jar=${module.publish.home}/rjmx-ri/jmxremote.jar
-jmx-remote_optional.jar=${module.publish.home}/rjmx-ri/jmxremote_optional.jar
-appserv-commons.jar=${module.publish.home}/appserv-commons/lib/appserv-commons.jar
-mgmt-api.jar=${module.publish.home}/management-api/lib/management-api.jar
-
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/jdbc/build.xml b/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/jdbc/build.xml
deleted file mode 100644
index 6afd09b..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/jdbc/build.xml
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-
-    Copyright (c) 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
-
--->
-
-<project name="MBeanApi Monitoring tests" default="all" basedir=".">
-
-<property name="testsRoot" value="."/>
-<property name="build" value="${testsRoot}/build"/>
-<property file="./bootstrap.subcomponent.properties"/>
-<property file="./../../../../../../../bootstrap/bootstrap.properties"/>
-<property file="./../../../../../../../appserv/build.properties"/>
-<property file="./build.properties"/>
-
-
-    <path id="compile.classpath">
-        <pathelement location="${jmxri.jar}"/>
-        <pathelement location="${mbeanapi.jar}"/>
-        <pathelement location="${mbeanapi-impl.jar}"/>
-        <pathelement location="../../common/build"/>
-    </path>
-
-    <path id="run.classpath">
-        <pathelement location="${jmx-ri.jar}"/>
-        <pathelement location="${mbeanapi.jar}"/>
-        <pathelement location="${mbeanapi-impl.jar}"/>
-        <pathelement location="../../common/build"/>
-        <pathelement location="${jmx-remote.jar}"/>
-        <pathelement location="${jmx-remote_optional.jar}"/>
-        <pathelement location="${appserv-commons.jar}"/>
-        <pathelement location="build"/>
-        <pathelement location="${mgmt-api.jar}"/>
-    </path>
-
-    <target name="init" description="MBeanapi Tests initialization">
-        <mkdir dir="${build}"/>
-    </target>
-
-    <!-- all -->
-    <target name="all" depends="build"
-        description="Build entire component">
-        <antcall target="jdbc-mtr-test"/>
-    </target>
-
-    <!-- build -->
-    <target name="build" depends="compile"
-        description="Build entire component" />
-
-    <!-- compile -->
-    <target name="compile" depends="init">
-        <javac  srcdir="${src.dir}"
-                destdir="${build}"
-                debug="${javac.debug}"
-                optimize="${javac.optimize}"
-                source="${javac.source}"
-                deprecation="${javac.deprecation}"
-                failonerror="true">
-            <classpath refid="compile.classpath"/>
-            <include name="**/*.java"/>
-        </javac>
-    </target>
-
-    <!-- clean -->
-    <target name="clean" description="clean">
-        <delete dir="${build}"/>
-    </target>
-
-    <!-- EJB pool monitoring Test Case -->
-    <target name="jdbc-mtr-test">
-        <antcall target="test-common">
-            <param name="test.class"
-               value="com.sun.s1asdev.admin.mbeanapi.monitoring.jdbc.JDBCMonitoring"/>
-       </antcall>
-    </target>
-
-    <target name="test-common">
-        <java classname="${test.class}" failonerror="true" fork="true">
-            <classpath>
-                <path refid="run.classpath"/>
-            </classpath>
-        <!--jvmarg value="-Dcom.sun.aas.instanceRoot=/tmp"/-->
-       </java>
-    </target>
-
-
-</project>
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/misc/MiscMonitoring.java b/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/misc/MiscMonitoring.java
deleted file mode 100644
index a058c65..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/misc/MiscMonitoring.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * Copyright (c) 2003, 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
- */
-
-package com.sun.s1asdev.admin.mbeanapi.monitoring.misc;
-
-import java.io.IOException;
-
-import java.util.Map;
-import java.util.Set;
-import java.util.Iterator;
-
-import javax.management.j2ee.statistics.Statistic;
-import javax.management.j2ee.statistics.Stats;
-
-import com.sun.appserv.management.DomainRoot;
-import com.sun.appserv.management.monitor.MonitoringRoot;
-import com.sun.appserv.management.monitor.ServerRootMonitor;
-import com.sun.appserv.management.monitor.JVMMonitor;
-import com.sun.appserv.management.monitor.TransactionServiceMonitor;
-import com.sun.appserv.management.monitor.HTTPServiceMonitor;
-import com.sun.appserv.management.monitor.ConnectionManagerMonitor;
-import com.sun.appserv.management.monitor.ThreadPoolMonitor;
-import com.sun.appserv.management.monitor.MonitoringStats;
-
-import com.sun.appserv.management.util.misc.ExceptionUtil;
-
-import com.sun.appserv.management.util.stringifier.SmartStringifier;
-import com.sun.appserv.management.util.stringifier.StringifierRegistryIniterImpl;
-import com.sun.appserv.management.util.stringifier.StringifierRegistryImpl;
-import com.sun.enterprise.admin.mbeanapi.common.AMXConnector;
-
-
-/**
- * This test print the statistics for ejb module and stateless bean
- *
- *  JDBCMonitoring</B>
- *
- * @author <a href=mailto:satish.viswanatham@sun.com>Satish Viswanatham</a>
- *         Date: Aug 24, 2004
- * @version $Revision: 1.3 $
- */
-public class MiscMonitoring {
-
-    private static DomainRoot    mDomainRoot;
-
-    private static final String SERVER_NAME = "server";
-
-    public void  testThreadPoolStats(ServerRootMonitor svrRootMtr)
-    {
-        Map tpMap= svrRootMtr.getThreadPoolMonitorMap();
-        System.out.println("\n" + "Thread Pool Monitor Stats: "
-        + "\n");
-
-        System.out.println("Thread PoolORB monitor map " + tpMap.size());
-
-        Iterator itr = tpMap.values().iterator();
-
-        while ( itr.hasNext()) {
-            Object o = itr.next();
-            System.out.println(" Looking at monitor " + o);
-
-            ThreadPoolMonitor tpm = (ThreadPoolMonitor) o;
-            listStats(tpm);
-        }
-    }
-
-    public void  testORBStats(ServerRootMonitor svrRootMtr)
-    {
-        Map orbMap= svrRootMtr.getORBConnectionManagerMonitorMap();
-        System.out.println("\n" + "ORB Connection Manager Monitor Stats: "
-        + "\n");
-
-        System.out.println("ORB monitor map " + orbMap.size());
-
-        Iterator itr = orbMap.values().iterator();
-
-        while ( itr.hasNext()) {
-            Object o = itr.next();
-            System.out.println(" Looking at monitor " + o);
-
-            ConnectionManagerMonitor cm = (ConnectionManagerMonitor) o;
-            listStats(cm);
-        }
-    }
-
-    public void  testJVMStats(ServerRootMonitor svrRootMtr)
-    {
-        JVMMonitor jvmMtr = svrRootMtr.getJVMMonitor();
-
-        System.out.println("\n" + "JVM Monitor Stats: " + "\n");
-        listStats(jvmMtr);
-    }
-
-    public void  testTransactionServiceStats(ServerRootMonitor svrRootMtr)
-    {
-        TransactionServiceMonitor tsMtr =
-            svrRootMtr.getTransactionServiceMonitor();
-
-        System.out.println("\n" + "Transaction Service Monitor Stats: " + "\n");
-        listStats(tsMtr);
-    }
-
-    public void  testHTTPServiceStats(ServerRootMonitor svrRootMtr)
-    {
-        HTTPServiceMonitor tsMtr =     svrRootMtr.getHTTPServiceMonitor();
-
-        System.out.println("\n" + "File Cache Monitor Stats: " + "\n");
-        listStats(tsMtr.getFileCacheMonitor());
-        System.out.println("\n" + "DNS Monitor Stats: " + "\n");
-        listStats(tsMtr.getDNSMonitor());
-        System.out.println("\n" + "PWC Thread pool Monitor Stats: " + "\n");
-        listStats(tsMtr.getPWCThreadPoolMonitor());
-        System.out.println("\n" + "Connection queue  Monitor Stats: " + "\n");
-        listStats(tsMtr.getConnectionQueueMonitor());
-        System.out.println("\n" + "Keep Alive Monitor Stats: " + "\n");
-        listStats(tsMtr.getKeepAliveMonitor());
-    }
-
-    public void listStats(MonitoringStats mtr)
-    {
-        if (mtr == null) {
-            System.out.println("Monitoring stats is null");
-        } else {
-            Stats stats = mtr.getStats();
-            Statistic[] sts = stats.getStatistics();
-            printStats(sts);
-        }
-    }
-
-    public void printStats(Statistic[] stats)
-    {
-        if (stats == null)
-            return;
-
-        for ( int i=0; i < stats.length; i++)
-        {
-            printStat(stats[i]);
-        }
-
-    }
-
-    public void printStat(Statistic stat)
-    {
-        if (stat == null)
-            return;
-        else
-            System.out.println(" Stat name is " + stat.getName() +
-                " description: " + stat.getDescription() + " start time "
-                + stat.getStartTime() + " last sample time "
-                + stat.getLastSampleTime() + " unit " + stat.getUnit());
-    }
-
-    public MiscMonitoring(final String host,
-                                   final int port,
-                                   final String adminUser,
-                                   final String adminPassword,
-                                   final boolean useTLS)
-                                    throws IOException
-    {
-        final AMXConnector ct    =
-            new AMXConnector( host, port, adminUser, adminPassword, useTLS );
-
-        mDomainRoot    = ct.getDomainRoot();
-
-    }
-
-
-    public static void   main( final String[] args )
-    {
-        new StringifierRegistryIniterImpl( StringifierRegistryImpl.DEFAULT );
-
-        try
-        {
-            MiscMonitoring miscMtr = new MiscMonitoring(
-                System.getProperty("HOST", "localhost"),
-                Integer.parseInt(System.getProperty("PORT","8686")),
-                System.getProperty("ADMIN_USER", "admin"),
-                System.getProperty("ADMIN_PASSWORD", "adminadmin"),
-                Boolean.getBoolean(System.getProperty("USE_TLS", "false")));
-
-            MonitoringRoot monitorRoot = mDomainRoot.getMonitoringRoot() ;
-            assert(monitorRoot !=null);
-            ServerRootMonitor svrRootMtr = (ServerRootMonitor) monitorRoot.
-                        getServerRootMonitorMap().  get(SERVER_NAME);
-
-            miscMtr.testJVMStats(svrRootMtr);
-            miscMtr.testTransactionServiceStats(svrRootMtr);
-            miscMtr.testHTTPServiceStats(svrRootMtr);
-            miscMtr.testThreadPoolStats(svrRootMtr);
-            miscMtr.testORBStats(svrRootMtr);
-        }
-        catch( Throwable t )
-        {
-            ExceptionUtil.getRootCause( t ).printStackTrace();
-        }
-    }
-}
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/misc/build.properties b/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/misc/build.properties
deleted file mode 100644
index b1a1948..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/misc/build.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# Copyright (c) 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
-#
-
-
-
-src.dir=.
-module.publish.home=../../../../../../${publish.home}
-mbeanapi.jar=${module.publish.home}/admin-core/mbeanapi/lib/mbeanapi.jar
-mbeanapi-impl.jar=${module.publish.home}/admin/mbeanapi-impl/lib/mbeanapi-impl.jar
-jmx-ri.jar=${module.publish.home}/jmx/lib/jmxri.jar
-jmx-remote.jar=${module.publish.home}/rjmx-ri/jmxremote.jar
-jmx-remote_optional.jar=${module.publish.home}/rjmx-ri/jmxremote_optional.jar
-appserv-commons.jar=${module.publish.home}/appserv-commons/lib/appserv-commons.jar
-mgmt-api.jar=${module.publish.home}/management-api/lib/management-api.jar
-
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/misc/build.xml b/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/misc/build.xml
deleted file mode 100644
index 1127060..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/misc/build.xml
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-
-    Copyright (c) 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
-
--->
-
-<project name="MBeanApi Monitoring tests" default="all" basedir=".">
-
-<property name="testsRoot" value="."/>
-<property name="build" value="${testsRoot}/build"/>
-<property file="./bootstrap.subcomponent.properties"/>
-<property file="./../../../../../../../bootstrap/bootstrap.properties"/>
-<property file="./../../../../../../../appserv/build.properties"/>
-<property file="./build.properties"/>
-
-
-    <path id="compile.classpath">
-        <pathelement location="${jmxri.jar}"/>
-        <pathelement location="${mbeanapi.jar}"/>
-        <pathelement location="${mbeanapi-impl.jar}"/>
-        <pathelement location="../../common/build"/>
-    </path>
-
-    <path id="run.classpath">
-        <pathelement location="${jmx-ri.jar}"/>
-        <pathelement location="${mbeanapi.jar}"/>
-        <pathelement location="${mbeanapi-impl.jar}"/>
-        <pathelement location="../../common/build"/>
-        <pathelement location="${jmx-remote.jar}"/>
-        <pathelement location="${jmx-remote_optional.jar}"/>
-        <pathelement location="${appserv-commons.jar}"/>
-        <pathelement location="${mgmt-api.jar}"/>
-        <pathelement location="build"/>
-    </path>
-
-    <target name="init" description="MBeanapi Tests initialization">
-        <mkdir dir="${build}"/>
-    </target>
-
-    <!-- all -->
-    <target name="all" depends="build"
-        description="Build entire component">
-        <antcall target="misc-mtr-test"/>
-    </target>
-
-    <!-- build -->
-    <target name="build" depends="compile"
-        description="Build entire component" />
-
-    <!-- compile -->
-    <target name="compile" depends="init">
-        <javac  srcdir="${src.dir}"
-                destdir="${build}"
-                debug="${javac.debug}"
-                optimize="${javac.optimize}"
-                source="${javac.source}"
-                deprecation="${javac.deprecation}"
-                failonerror="true">
-            <classpath refid="compile.classpath"/>
-            <include name="**/*.java"/>
-        </javac>
-    </target>
-
-    <!-- clean -->
-    <target name="clean" description="clean">
-        <delete dir="${build}"/>
-    </target>
-
-    <!-- EJB pool monitoring Test Case -->
-    <target name="misc-mtr-test">
-        <antcall target="test-common">
-            <param name="test.class"
-               value="com.sun.s1asdev.admin.mbeanapi.monitoring.misc.MiscMonitoring"/>
-       </antcall>
-    </target>
-
-    <target name="test-common">
-        <java classname="${test.class}" failonerror="true" fork="true">
-            <classpath>
-                <path refid="run.classpath"/>
-            </classpath>
-        <!--jvmarg value="-Dcom.sun.aas.instanceRoot=/tmp"/-->
-       </java>
-    </target>
-
-
-</project>
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/web/WebMonitoring.java b/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/web/WebMonitoring.java
deleted file mode 100644
index ea22ff0..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/web/WebMonitoring.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright (c) 2003, 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
- */
-
-package com.sun.s1asdev.admin.mbeanapi.monitoring.web;
-
-import java.io.IOException;
-
-import java.util.Map;
-import java.util.Set;
-import java.util.Iterator;
-import java.util.Collection;
-
-import com.sun.appserv.management.monitor.ApplicationMonitor;
-import com.sun.appserv.management.monitor.ServletMonitor;
-import com.sun.appserv.management.monitor.WebModuleVirtualServerMonitor;
-
-import com.sun.appserv.management.util.misc.ExceptionUtil;
-
-import com.sun.appserv.management.util.stringifier.SmartStringifier;
-import com.sun.appserv.management.util.stringifier.StringifierRegistryIniterImpl;
-import com.sun.appserv.management.util.stringifier.StringifierRegistryImpl;
-
-import com.sun.enterprise.admin.mbeanapi.common.AMXConnector;
-import com.sun.enterprise.admin.mbeanapi.common.AMXMonitoringTestBase;
-
-
-
-/**
- * This test prints the statistics for ejb module and stateless bean
- *
- *  WebMonitoring</B>
- *
- * @author <a href=mailto:satish.viswanatham@sun.com>Satish Viswanatham</a>
- *         Date: Aug 24, 2004
- * @version $Revision: 1.7 $
- */
-public class WebMonitoring extends AMXMonitoringTestBase {
-
-    private String serverName;
-    private static String SERVLETS = " - SERVLETS -";
-    private static String VS = "VIRTUAL SERVER";
-
-    public WebMonitoring(final String host, final int port, final String serverName,
-            final String adminUser, final String adminPassword,
-            final boolean useTLS) throws IOException {
-        super(host, port, adminUser,adminPassword,useTLS);
-        this.serverName = serverName;
-    }
-
-
-    public void  test(final String applicationName, final String webModule) {
-        if(isEmbeddedWebModule(applicationName, webModule)) {
-            testEmbeddedWebModules(getWebModules(applicationName));
-        } else {
-            testStandAloneWebModule(webModule);
-        }
-    }
-
-
-    /**
-     *
-     */
-    public void testStandAloneWebModule(final String webModuleName) {
-            Map webMap = getServerRootMonitor(serverName).
-                getWebModuleVirtualServerMonitorMap();
-            assert(webMap != null && webMap.size() > 0) : "FAILURE!";
-            testEmbeddedWebModules(webMap);
-    }
-
-
-    /**
-     *
-     */
-    public void testEmbeddedWebModules(final Map webModules) {
-        assert(webModules != null && webModules.size() > 0) :
-            "No web module monitors found! Make sure that the monitoring level " +
-            "is set to HIGH or LOW!!";
-        Iterator itr = webModules.values().iterator();
-        while(itr.hasNext()) {
-            WebModuleVirtualServerMonitor webMonitor = (WebModuleVirtualServerMonitor)itr.next();
-            if (!webMonitor.getName().equals("//__asadmin/adminapp")
-                    && !webMonitor.getName().equals("//__asadmin/admingui")
-                    && !webMonitor.getName().equals("//__asadmin/com_sun_web_ui")) {
-                System.out.println("\nStats for WebModule [" +
-                webMonitor.getName() + "]");
-                testWebModuleServlets(webMonitor.getServletMonitorMap());
-            }
-        }
-    }
-
-
-    /**
-     *
-     */
-    public void testWebModuleServlets(final Map servlets) {
-        printBlock(SERVLETS);
-        assert(servlets != null && servlets.size() > 0) :
-            "No servlet monitors found! Make sure that the monitoring level " +
-            "is set to HIGH or LOW!!";
-        Iterator itr = servlets.values().iterator();
-        while(itr.hasNext()) {
-            ServletMonitor sltMonitor = (ServletMonitor)itr.next();
-            System.out.println("  |");
-            System.out.println("  |");
-            System.out.println("  ---- SERVLET [" + sltMonitor.getName() + "]");
-            listStats(sltMonitor);
-        }
-    }
-
-
-    /**
-     *
-     */
-    private Map getWebModules(final String applicationName) {
-        return getApplicationMonitor(serverName, applicationName).
-            getWebModuleVirtualServerMonitorMap();
-    }
-
-
-    /**
-     *
-     */
-    private boolean isEmbeddedWebModule(final String applicationName,
-            final String webModuleName) {
-        final ApplicationMonitor appMtr =
-            getApplicationMonitor(serverName, applicationName);
-        final Map webMgr = appMtr.getWebModuleVirtualServerMonitorMap();
-        return (webMgr.get(webModuleName) != null
-            || "".equals(webMgr.get(webModuleName)));
-    }
-
-
-
-    /**
-     *
-     */
-    public static void   main( final String[] args ) {
-        new StringifierRegistryIniterImpl( StringifierRegistryImpl.DEFAULT );
-
-        try {
-            WebMonitoring webMtr = new WebMonitoring(
-                System.getProperty("HOST", "localhost"),
-                Integer.parseInt(System.getProperty("PORT","8686")), args[0],
-                System.getProperty("ADMIN_USER", "admin"),
-                System.getProperty("ADMIN_PASSWORD", "adminadmin"),
-                Boolean.getBoolean(System.getProperty("USE_TLS", "false")));
-
-            WebMonitoring.printArgs(args);
-
-            if(args.length < 3) {
-                webMtr.test(null,null);
-            } else {
-                webMtr.test(args[1], args[2]);
-            }
-
-        } catch( Throwable t ) {
-            ExceptionUtil.getRootCause( t ).printStackTrace();
-        }
-    }
-
-}
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/web/build.properties b/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/web/build.properties
deleted file mode 100644
index 895c078..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/web/build.properties
+++ /dev/null
@@ -1,55 +0,0 @@
-#
-# Copyright (c) 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
-#
-
-#
-# The environment variables for compiling and running the tests.
-#
-src.dir=
-
-#
-# Set location for jmx.jar either from install or build.
-#
-jmx.jar=
-
-#
-# Classpath dependent variables
-#
-module.publish.home=${src.dir}/publish/JDK1.4_DBG.OBJ
-mbeanapi.jar=${module.publish.home}/admin-core/mbeanapi/lib/mbeanapi.jar
-mbeanapi-impl.jar=${module.publish.home}/admin/mbeanapi-impl/lib/mbeanapi-impl.jar
-jmx-ri.jar=${module.publish.home}/jmx/lib/jmxri.jar
-jmx-remote.jar=${module.publish.home}/rjmx-ri/jmxremote.jar
-jmx-remote_optional.jar=${module.publish.home}/rjmx-ri/jmxremote_optional.jar
-appserv-commons.jar=${module.publish.home}/appserv-commons/lib/appserv-commons.jar
-mgmt-api.jar=${module.publish.home}/management-api/lib/management-api.jar
-
-#
-# The instance that the web module or application is deployed on. If this is
-# null or "" then the default server instance "server" is assumed.
-#
-instance.name=server
-
-#
-# The application that the web module lives in. This is only relevant if the
-# web module to be tested is embedded within an application.
-#
-application.name=stateless-simple
-
-#
-# The embedded or standalone web module.
-#
-web.module.name=stateless-simple.war
-
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/web/build.xml b/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/web/build.xml
deleted file mode 100644
index b764fe3..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/web/build.xml
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-
-    Copyright (c) 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
-
--->
-
-<project name="MBeanApi Monitoring tests" default="all" basedir=".">
-
-<property name="testsRoot" value="."/>
-<property name="build" value="${testsRoot}/build"/>
-<property file="./bootstrap.subcomponent.properties"/>
-<property file="./../../../../../../../bootstrap/bootstrap.properties"/>
-<property file="./../../../../../../../appserv/build.properties"/>
-<property file="./build.properties"/>
-
-
-    <path id="compile.classpath">
-        <pathelement location="${jmxri.jar}"/>
-        <pathelement location="${mbeanapi.jar}"/>
-        <pathelement location="${mbeanapi-impl.jar}"/>
-        <pathelement location="${jmx.jar}"/>
-    </path>
-
-    <path id="run.classpath">
-        <pathelement location="${jmx-ri.jar}"/>
-        <pathelement location="${mbeanapi.jar}"/>
-        <pathelement location="${mbeanapi-impl.jar}"/>
-        <pathelement location="../../common/build"/>
-        <pathelement location="${jmx-remote.jar}"/>
-        <pathelement location="${jmx-remote_optional.jar}"/>
-        <pathelement location="${appserv-commons.jar}"/>
-        <pathelement location="${mgmt-api.jar}"/>
-        <pathelement location="${jmx.jar}"/>
-        <pathelement location="build"/>
-    </path>
-
-    <target name="init" description="MBeanapi Tests initialization">
-        <mkdir dir="${build}"/>
-    </target>
-
-    <!-- all -->
-    <target name="all" depends="build"
-        description="Build entire component">
-        <antcall target="web-mtr-test"/>
-    </target>
-
-    <!-- build -->
-    <target name="build" depends="compile"
-        description="Build entire component" />
-
-    <!-- compile-common -->
-    <target name="compile-common" depends="init">
-        <javac  srcdir="${src.dir}/appserv-tests/devtests/ee/admin/mbeanapi/common"
-                destdir="${build}"
-                debug="${javac.debug}"
-                optimize="${javac.optimize}"
-                source="${javac.source}"
-                deprecation="${javac.deprecation}"
-                failonerror="true">
-            <classpath refid="compile.classpath"/>
-            <include name="**/*.java"/>
-        </javac>
-    </target>
-
-    <!-- compile -->
-    <target name="compile" depends="init, compile-common">
-        <javac  srcdir="${src.dir}/appserv-tests/devtests/ee/admin/mbeanapi/monitoring/web"
-                destdir="${build}"
-                debug="${javac.debug}"
-                optimize="${javac.optimize}"
-                source="${javac.source}"
-                deprecation="${javac.deprecation}"
-                failonerror="true">
-            <classpath refid="compile.classpath"/>
-            <include name="**/*.java"/>
-        </javac>
-    </target>
-
-    <!-- clean -->
-    <target name="clean" description="clean">
-        <delete dir="${build}"/>
-    </target>
-
-    <!-- EJB pool monitoring Test Case -->
-    <target name="web-mtr-test">
-        <antcall target="test-common">
-            <param name="test.class"
-               value="com.sun.s1asdev.admin.mbeanapi.monitoring.web.WebMonitoring"/>
-       </antcall>
-    </target>
-
-    <target name="test-common">
-        <java classname="${test.class}" failonerror="true" fork="true">
-            <classpath>
-                <path refid="run.classpath"/>
-            </classpath>
-        <jvmarg value="-enableassertions"/>
-        <arg value="${instance.name}" />
-        <arg value="${application.name}" />
-        <arg value="${web.module.name}" />
-       </java>
-    </target>
-
-
-</project>
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/build.properties b/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/build.properties
deleted file mode 100644
index 41f2762..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/build.properties
+++ /dev/null
@@ -1,30 +0,0 @@
-<!--
-
-    Copyright (c) 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
-
--->
-
-
-<property name="module" value="management-mejb"/>
-<property name="appname" value="${module}"/>
-<property name="assemble" value="${build.classes.dir}/archive"/>
-<property name="test.client" value="management-mejbClient"/>
-<property name="application.xml" value="descriptor/application.xml"/>
-<property name="sun-application.xml" value="descriptor/sun-application.xml"/>
-<property name="application-client.xml" value="descriptor/application-client.xml"/>
-<property name="sun-application-client.xml" value="descriptor/sun-application-client.xml"/>
-<property name="appclientjar.files" value="${build.classes.dir}"/>
-<property name="appclient.jar" value="${assemble.dir}/${appname}-client.jar"/>
-<property name="app.type" value="application"/>
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/build.xml b/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/build.xml
deleted file mode 100644
index 4988fda..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/build.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE project [
-<!--
-
-    Copyright (c) 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
-
--->
-
-<!ENTITY commonSetup SYSTEM "file:./../../../config/properties.xml">
-<!ENTITY commonBuild SYSTEM "file:./../../../config/common.xml">
-<!ENTITY commonLazyInit SYSTEM "file:./../common.xml">
-<!ENTITY testproperties SYSTEM "file:./build.properties">
-]>
-
-<project name="management-mejb" default="usage" basedir=".">
-
-    &commonSetup;
-    &commonBuild;
-    &commonLazyInit;
-    &testproperties;
-
-    <target name="all" depends="run-test"/>
-    <target name="run-test" depends="pre-start,clean,build,deploy,run,undeploy"/>
-
-    <target name="clean" depends="init-common">
-      <antcall  target="clean-common"/>
-    </target>
-
-    <target name="compile" depends="clean">
-        <antcall target="compile-common">
-            <param name="src" value="client"/>
-        </antcall>
-    </target>
-
-    <target name="build" depends="compile">
-        <antcall target="appclient-jar-common">
-            <param name="appclientjar.classes"
-              value="**/*Client*.class" />
-        </antcall>
-        <antcall target="ear-common"/>
-    </target>
-
-    <target name="deploy"
-            depends="init-common">
-        <antcall target="deploy-common"/>
-    </target>
-
-
-    <target name="run" depends="init-common">
-        <antcall target="restart-server"/>
-        <antcall target="runclient-common"/>
-    </target>
-
-    <target name="undeploy" depends="init-common">
-        <antcall target="undeploy-common"/>
-    </target>
-
-    <target name="usage">
-        <antcall target="usage-common"/>
-    </target>
-
-
-
-</project>
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/client/Client.java b/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/client/Client.java
deleted file mode 100644
index fd8935f..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/client/Client.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (c) 2002, 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
- */
-
-package com.sun.s1asdev.management.mejb.client;
-
-
-import java.util.*;
-import javax.management.*;
-import javax.management.remote.*;
-
-import com.sun.appserv.management.*;
-import com.sun.appserv.management.client.*;
-import com.sun.appserv.management.config.*;
-
-import com.sun.ejte.ccl.reporter.SimpleReporterAdapter;
-
-public class Client {
-
-    // consts
-    public static String kTestNotRun    = "TEST NOT RUN";
-    public static String kTestPassed    = "TEST PASSED";
-    public static String kTestFailed    = "TEST FAILED";
-
-    private static SimpleReporterAdapter stat =
-        new SimpleReporterAdapter("appserv-tests");
-
-    public static void main (String[] args) {
-        stat.addDescription("management-mejb");
-        Client client = new Client(args);
-        client.doTest();
-        stat.printSummary("management-mejb");
-    }
-
-    public Client (String[] args) {}
-
-    public String doTest() {
-
-    boolean pass = false;
-        String res = kTestNotRun;
-
-        try {
-
-        String host = "localhost";
-        int port = 8686;
-        String user = "admin";
-        String password = "adminadmin";
-
-        // Get Config info using AMX
-        AppserverConnectionSource conn = new AppserverConnectionSource(
-                              host, port, user, password, null);
-
-        DomainRoot domainRoot = conn.getDomainRoot();
-
-        DomainConfig config = domainRoot.getDomainConfig();
-
-        Map map = config.getJDBCResourceConfigMap();
-        Collection<JDBCResourceConfig> jdbcConfigs =
-                    (Collection<JDBCResourceConfig>)map.values();
-        for ( JDBCResourceConfig jdbcConfig : jdbcConfigs ) {
-            System.err.println("JDBC Resource: name = " + jdbcConfig.getName()
-                    + ", JNDI Name = " + jdbcConfig.getJNDIName()
-                    + ", Pool Name = " + jdbcConfig.getPoolName());
-            System.err.println("\t\tJ2EEType = " + jdbcConfig.getJ2EEType());
-                    pass = true;
-        }
-
-                if (pass == false) {
-                    throw new Exception("No JDBC resources found");
-                }
-                pass = false;
-
-        // Get Config info using JMX
-        //MBeanServerConnection mbConn = conn.getMBeanServerConnection( false );
-        String urls = "service:jmx:rmi:///jndi/rmi://" +
-                  host + ":" + port  + "/management/rmi-jmx-connector";
-        JMXServiceURL url = new JMXServiceURL(urls);
-        HashMap env = new HashMap();
-        env.put(JMXConnector.CREDENTIALS, new String[] { user, password });
-        JMXConnector jmxConnector = JMXConnectorFactory.connect(url, env);
-        MBeanServerConnection mbConn = jmxConnector.getMBeanServerConnection();
-
-        //ObjectName objectName =
-        //        new ObjectName("amx:j2eeType=X-JDBCResourceConfig,*");
-        ObjectName objectName = null; // to query all MBeans
-        Set mbeans = (Set) mbConn.queryNames(objectName, null);
-        Iterator it = mbeans.iterator();
-        while ( it.hasNext() ) {
-            ObjectName mbean = (ObjectName) it.next();
-            System.err.println("Object Name : " + mbean.getCanonicalName());
-                    pass = true;
-                }
-
-                if (pass == false) {
-                    throw new Exception("No Mbeans found");
-                }
-
-    } catch(Exception re) {
-            re.printStackTrace();
-            res = kTestFailed;
-            return res;
-    }
-
-    if ( pass ) {
-        res = kTestPassed;
-        System.out.println("Mbean Test passed");
-            stat.addStatus("Mbean Test", stat.PASS);
-
-    } else {
-        res = kTestFailed;
-        System.out.println("Mbean Test failed");
-            stat.addStatus("Mbean Test", stat.FAIL);
-
-    }
-
-        return res;
-    }
-
-}
-
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/client/MANIFEST.MF b/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/client/MANIFEST.MF
deleted file mode 100644
index b4bb107..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/client/MANIFEST.MF
+++ /dev/null
@@ -1,4 +0,0 @@
-Manifest-Version: 1.0
-Created-By: Apache Ant 1.5.1
-Main-Class: com.sun.s1asdev.management.mejb.client.Client
-
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/descriptor/application-client.xml b/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/descriptor/application-client.xml
deleted file mode 100644
index e9aa427..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/descriptor/application-client.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Copyright (c) 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
-
--->
-
-<application-client version="1.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/application-client_1_4.xsd">
-  <display-name>management-mejbClient</display-name>
-  <ejb-ref>
-    <ejb-ref-name>ejbs/mejb</ejb-ref-name>
-    <ejb-ref-type>Session</ejb-ref-type>
-    <home>javax.management.j2ee.ManagementHome</home>
-    <remote>javax.management.j2ee.Management</remote>
-    <ejb-link>MEjbBean</ejb-link>
-  </ejb-ref>
-</application-client>
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/descriptor/application.xml b/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/descriptor/application.xml
deleted file mode 100644
index 67b56f4..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/descriptor/application.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Copyright (c) 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
-
--->
-
-<application version="1.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/application_1_4.xsd">
-  <description>MEJB Client Application</description>
-  <display-name>mejbClientApp</display-name>
-  <module>
-    <java>management-mejb-client.jar</java>
-  </module>
-</application>
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/descriptor/sun-application-client.xml b/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/descriptor/sun-application-client.xml
deleted file mode 100644
index e0cc83a..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/descriptor/sun-application-client.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE sun-application-client PUBLIC "-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 7.0 Application Client 1.3//EN" "http://www.sun.com/software/sunone/appserver/dtds/sun-application-client_1_3-0.dtd">
-<!--
-
-    Copyright (c) 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
-
--->
-
-<sun-application-client>
-  <ejb-ref>
-    <ejb-ref-name>ejbs/mejb</ejb-ref-name>
-    <jndi-name>ejb/mgmt/MEJB</jndi-name>
-  </ejb-ref>
-</sun-application-client>
diff --git a/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/descriptor/sun-application.xml b/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/descriptor/sun-application.xml
deleted file mode 100644
index a956f32..0000000
--- a/appserver/tests/v2-tests/appserv-tests/devtests/lazyInit/mbeans1/descriptor/sun-application.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE sun-application PUBLIC "-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 7.0 J2EE Application 1.3//EN" "http://www.sun.com/software/sunone/appserver/dtds/sun-application_1_3-0.dtd">
-<!--
-
-    Copyright (c) 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
-
--->
-
-<sun-application/>
diff --git a/appserver/tests/v2-tests/appserv-tests/sqetests/management/README b/appserver/tests/v2-tests/appserv-tests/sqetests/management/README
deleted file mode 100644
index d1099fd..0000000
--- a/appserver/tests/v2-tests/appserv-tests/sqetests/management/README
+++ /dev/null
@@ -1,18 +0,0 @@
-unit tests for management
-This test is not turned on as part of quick test yet.
-Until MEjbApp.ear is deployed in the appserver as part of auto deploy, please deploy the mejb manually and run this test to check the
-availability of the mejb.
-MEjbAppl.ear is available as part of the source build in publish/<JDK...>/admin-core/jsr77/lib directory.
-Here is the deploy command to deploy the MEjbApp.ear, assuming its copied to c:\temp 
-
-asadmin>deploy --user admin --password password --name MEjbApp c:/temp/MEjbApp.ear --type application
-
-To execute the test, cd to appserv-tests\sqetests\management directory and run the following commond.
-> ant mejb
-
-
-
-
-
-
-
diff --git a/appserver/tests/v2-tests/appserv-tests/sqetests/management/build.xml b/appserver/tests/v2-tests/appserv-tests/sqetests/management/build.xml
deleted file mode 100644
index c39d17a..0000000
--- a/appserver/tests/v2-tests/appserv-tests/sqetests/management/build.xml
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-
-    Copyright (c) 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
-
--->
-
-<project name="management" default="usage" basedir=".">
-
-    <property name="mejb-target" value="all"/>
-
-<!-- ======== Targets by execution granularity ========== -->
-    <target name="all">
-        <antcall target="mejbtests">
-            <param name="mejb-target" value="all"/>
-        </antcall>
-    </target>
-
-    <target name="run-test">
-        <antcall target="mejbtests">
-            <param name="mejb-target" value="run-test"/>
-        </antcall>
-    </target>
-
-    <target name="clean">
-        <antcall target="mejbtests">
-            <param name="mejb-target" value="clean"/>
-        </antcall>
-    </target>
-
-    <target name="build">
-        <antcall target="mejbtests">
-            <param name="mejb-target" value="build"/>
-        </antcall>
-    </target>
-
-    <target name="deploy">
-        <antcall target="mejbtests">
-            <param name="mejb-target" value="deploy"/>
-        </antcall>
-    </target>
-
-    <target name="undeploy">
-        <antcall target="mejbtests">
-            <param name="mejb-target" value="undeploy"/>
-        </antcall>
-    </target>
-
-    <target name="run">
-        <antcall target="mejbtests">
-            <param name="mejb-target" value="run"/>
-        </antcall>
-    </target>
-
-    <target name="setup">
-        <antcall target="mejbtests">
-            <param name="mejb-target" value="setup"/>
-        </antcall>
-    </target>
-
-    <target name="unsetup">
-        <antcall target="mejbtests">
-            <param name="mejb-target" value="unsetup"/>
-        </antcall>
-    </target>
-
-
-    <target name="mejbtests">
-        <antcall target="mejb"/>
-    </target>
-
-<!-- ======== Targets by technology ========== -->
-
-    <target name="mejb">
-        <record name="mejb.output" action="start" />
-            <ant dir="mejb" target="${mejb-target}"/>
-        <record name="mejb.output" action="stop" />
-    </target>
-
-    <target name="usage">
-    <echo> Usage:
-    ======== Targets by execution granularity =========
-
-    ant clean (Cleans all management tests)
-    ant build (builds all mejb tests)
-    ant setup (setup all required resources)
-    ant deploy (deploy all test apps)
-    ant run (Executes all tests)
-    ant undeploy (undeploy all test apps)
-    ant unsetup (remove all set resources)
-
-    ======== Targets by technology =========
-
-    ant mejb (Executes the mejb test)
-    ant all (Executes all the mejb tests)
-
-    ===== Targets by technoloy and execution granularity ======
-    Note: Run the command of the following type:
-
-            % ant mejb -Dmejb-target=clean
-
-    to run the 'clean' target for 'stateless' tests
-    </echo>
-    </target>
-</project>
diff --git a/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/build.properties b/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/build.properties
deleted file mode 100644
index 0158802..0000000
--- a/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/build.properties
+++ /dev/null
@@ -1,31 +0,0 @@
-<!--
-
-    Copyright (c) 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
-
--->
-
-
-<property name="module" value="management-mejb"/>
-<property name="appname" value="${module}"/>
-<property name="assemble" value="${build.classes.dir}/archive"/>
-<property name="test.client" value="management-mejbClient"/>
-<property name="application.xml" value="descriptor/application.xml"/>
-<property name="sun-application.xml" value="descriptor/sun-application.xml"/>
-<property name="application-client.xml" value="descriptor/application-client.xml"/>
-<property name="sun-application-client.xml" value="descriptor/sun-application-client.xml"/>
-<property name="appclientjar.files" value="${build.classes.dir}"/>
-<property name="appclient.jar" value="${assemble.dir}/${appname}-client.jar"/>
-<property name="app.type" value="application"/>
-<property name="verbose.mode" value="false"/>
diff --git a/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/build.xml b/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/build.xml
deleted file mode 100644
index a5f9f55..0000000
--- a/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/build.xml
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE project [
-<!--
-
-    Copyright (c) 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
-
--->
-
-<!ENTITY commonSetup SYSTEM "file:./../../../config/properties.xml">
-<!ENTITY commonBuild SYSTEM "file:./../../../config/common.xml">
-<!ENTITY testproperties SYSTEM "file:./build.properties">
-]>
-
-<project name="management-mejb" default="usage" basedir=".">
-
-    &commonSetup;
-    &commonBuild;
-    &testproperties;
-
-    <target name="all" depends="clean,build,deploy,setup, run,undeploy,unsetup"/>
-    <target name="run-test" depends="clean,build,deploy,run,undeploy"/>
-
-    <target name="setup">
-        <antcall target="create-file-users"/>
-    </target>
-    <target name="unsetup">
-        <antcall target="delete-file-users"/>
-    </target>
-
-    <target name="clean" depends="init-common">
-      <antcall  target="clean-common"/>
-    </target>
-
-    <target name="compile" depends="clean">
-        <antcall target="compile-common">
-            <param name="src" value="client"/>
-        </antcall>
-    </target>
-
-    <target name="build" depends="compile">
-        <antcall target="appclient-jar-common">
-            <param name="appclientjar.classes"
-              value="**/*Client*.class" />
-        </antcall>
-        <antcall target="ear-common"/>
-    </target>
-
-    <target name="deploy"
-            depends="init-common">
-        <antcall target="deploy-common"/>
-    </target>
-
-    <target name="run" depends="init-common">
-        <antcall target="runclient-common">
-        <param name="appclient.application.args" value="${verbose.mode}"/>
-        </antcall>
-
-    </target>
-
-    <target name="undeploy" depends="init-common">
-        <antcall target="undeploy-common"/>
-    </target>
-
-    <target name="usage">
-        <antcall target="usage-common"/>
-    </target>
-
-<!-- ================================================================ -->
-<!-- Target to create users in file realm -->
-<!-- ================================================================ -->
-
-<target name="create-file-users" depends="init-common">
-  <antcall target ="create-user-common">
-    <param name="user" value="j2ee"/>
-    <param name="password" value="j2ee"/>
-    <param name="groups" value="asadmin"/>
-  </antcall>
-</target>
-
-<!-- ================================================================ -->
-<!-- Target to delete users in file realm -->
-<!-- ================================================================ -->
-
-<target name="delete-file-users" depends="init-common">
-  <antcall target ="delete-user-common">
-    <param name="user" value="j2ee"/>
-    <param name="password" value="j2ee"/>
-    <param name="groups" value="asadmin"/>
-  </antcall>
-</target>
-
-</project>
diff --git a/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/client/Client.java b/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/client/Client.java
deleted file mode 100644
index e5c974b..0000000
--- a/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/client/Client.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright (c) 2002, 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
- */
-
-package com.sun.s1asdev.management.mejb.client;
-
-import java.io.*;
-import java.util.*;
-import javax.management.j2ee.ManagementHome;
-import javax.management.j2ee.Management;
-import javax.management.*;
-import javax.naming.*;
-import javax.rmi.PortableRemoteObject;
-
-import com.sun.ejte.ccl.reporter.SimpleReporterAdapter;
-
-public class Client {
-
-    // consts
-    public static String kTestNotRun    = "TEST NOT RUN";
-    public static String kTestPassed    = "TEST PASSED";
-    public static String kTestFailed    = "TEST FAILED";
-    public boolean DEBUG    = false;
-
-    String jndiName = "ejb/mgmt/MEJB";
-    private static SimpleReporterAdapter stat =
-        new SimpleReporterAdapter("appserv-tests");
-
-    public static void main (String[] args) {
-        stat.addDescription("management-mejb");
-        Client client = new Client(args);
-        client.doTest();
-        stat.printSummary("management-mejb");
-    }
-
-    public Client(String[] args) {
-        String debug=args[0];
-        if(debug.equalsIgnoreCase("false"))
-            DEBUG=false;
-        if(debug.equalsIgnoreCase("true"))
-            DEBUG=true;
-    }
-
-
-
-    public String doTest() {
-
-        boolean pass = true;
-        String res = kTestNotRun;
-
-        try {
-
-            Context ic = new InitialContext();
-            System.out.println("***Created initial context");
-
-            java.lang.Object objref = ic.lookup("ejb/mgmt/MEJB");
-            System.out.println("***Looked up ManagementHome!!");
-
-            ManagementHome  home = (ManagementHome)PortableRemoteObject.narrow(
-                    objref, ManagementHome.class);
-            System.out.println("***Narrowed ManagementHome!!");
-
-            Management mejb = home.create();
-            System.out.println("***Got the MEJB!!");
-
-            String domain = mejb.getDefaultDomain();
-            System.out.println("***MEJB default domain = "+domain);
-            int mbeanCount = mejb.getMBeanCount().intValue();
-            System.out.println("***MBeanCount = "+mbeanCount);
-
-            // Print attributes of all MBeans
-            ObjectName query = new ObjectName("*:*");
-            Set mbeanNames = mejb.queryNames(query, null);
-            if ( mbeanNames.size() != mbeanCount ) {
-                System.out.println("***ERROR: mbeans returned by query is "
-                        +mbeanNames.size());
-                pass = false;
-            }
-            if(DEBUG){
-                System.out.println("Test running in verbose mode");
-                printConsoleOutput(mbeanNames,mejb);
-            }
-            mejb.remove();
-            if ( pass ) {
-                res = kTestPassed;
-                System.out.println("MEJB Test passed");
-                stat.addStatus("MEJB Test", stat.PASS);
-
-            } else {
-                res = kTestFailed;
-                System.out.println("MEJB Test failed");
-                stat.addStatus("MEJB Test", stat.FAIL);
-
-            }
-
-            return res;
-
-        } catch(NamingException ne){
-            System.out.println("***Exception while initializing context.\n");
-            ne.printStackTrace();
-            res = kTestFailed;
-            return res;
-        } catch(Exception re) {
-            re.printStackTrace();
-            res = kTestFailed;
-            return res;
-        }
-    }
-
-     public void printConsoleOutput(Set mbeanNames, Management managementbean){
-        Set mbeanNamesSet=mbeanNames;
-        Management mejb=managementbean;
-
-        try{
-            Iterator it = mbeanNamesSet.iterator();
-            while ( it.hasNext() ) {
-
-                ObjectName name = (ObjectName)it.next();
-                System.out.println("ObjectName = "+name);
-
-                // Construct list of attr names
-                MBeanInfo info = mejb.getMBeanInfo(name);
-                MBeanAttributeInfo[] attrInfo = info.getAttributes();
-                String[] attrNames = new String[attrInfo.length];
-                for ( int i=0; i<attrInfo.length; i++ ) {
-                    attrNames[i] = attrInfo[i].getName();
-                }
-                // Get attr values from MEJB and print them
-
-                AttributeList attrs = mejb.getAttributes(name, attrNames);
-                for ( int i=0; i<attrs.size(); i++ ) {
-
-                    if (attrs.get(i) != null) {
-                        System.out.println("TYPE = " +
-                                attrs.get(i).getClass().getName());
-                    }
-
-                    if (attrs.get(i) instanceof Attribute) {
-                        Attribute attr = (Attribute)attrs.get(i);
-                        System.out.println("Attribute name = "+attr.getName()
-                        +"value = "+attr.getValue());
-                    } else {
-                        Object attr = attrs.get(i);
-                        System.out.println("Attribute = " + attr);
-                    }
-                }
-            }
-        } catch(Exception exp){
-            //exp.printStackTrace();
-            System.out.println("***Exception occured while "+
-                    "accessing mbean details:  Keep continuing\n");
-        }
-        //System.out.println("=======================");
-    }
-
-
-}
diff --git a/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/client/MANIFEST.MF b/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/client/MANIFEST.MF
deleted file mode 100644
index b4bb107..0000000
--- a/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/client/MANIFEST.MF
+++ /dev/null
@@ -1,4 +0,0 @@
-Manifest-Version: 1.0
-Created-By: Apache Ant 1.5.1
-Main-Class: com.sun.s1asdev.management.mejb.client.Client
-
diff --git a/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/descriptor/application-client.xml b/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/descriptor/application-client.xml
deleted file mode 100644
index e9aa427..0000000
--- a/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/descriptor/application-client.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Copyright (c) 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
-
--->
-
-<application-client version="1.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/application-client_1_4.xsd">
-  <display-name>management-mejbClient</display-name>
-  <ejb-ref>
-    <ejb-ref-name>ejbs/mejb</ejb-ref-name>
-    <ejb-ref-type>Session</ejb-ref-type>
-    <home>javax.management.j2ee.ManagementHome</home>
-    <remote>javax.management.j2ee.Management</remote>
-    <ejb-link>MEjbBean</ejb-link>
-  </ejb-ref>
-</application-client>
diff --git a/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/descriptor/application.xml b/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/descriptor/application.xml
deleted file mode 100644
index 67b56f4..0000000
--- a/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/descriptor/application.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Copyright (c) 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
-
--->
-
-<application version="1.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/application_1_4.xsd">
-  <description>MEJB Client Application</description>
-  <display-name>mejbClientApp</display-name>
-  <module>
-    <java>management-mejb-client.jar</java>
-  </module>
-</application>
diff --git a/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/descriptor/sun-application-client.xml b/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/descriptor/sun-application-client.xml
deleted file mode 100644
index e0cc83a..0000000
--- a/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/descriptor/sun-application-client.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE sun-application-client PUBLIC "-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 7.0 Application Client 1.3//EN" "http://www.sun.com/software/sunone/appserver/dtds/sun-application-client_1_3-0.dtd">
-<!--
-
-    Copyright (c) 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
-
--->
-
-<sun-application-client>
-  <ejb-ref>
-    <ejb-ref-name>ejbs/mejb</ejb-ref-name>
-    <jndi-name>ejb/mgmt/MEJB</jndi-name>
-  </ejb-ref>
-</sun-application-client>
diff --git a/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/descriptor/sun-application.xml b/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/descriptor/sun-application.xml
deleted file mode 100644
index a956f32..0000000
--- a/appserver/tests/v2-tests/appserv-tests/sqetests/management/mejb/descriptor/sun-application.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE sun-application PUBLIC "-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 7.0 J2EE Application 1.3//EN" "http://www.sun.com/software/sunone/appserver/dtds/sun-application_1_3-0.dtd">
-<!--
-
-    Copyright (c) 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
-
--->
-
-<sun-application/>
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 4479088..683f895 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,5 +1,6 @@
 /*
  * Copyright (c) 2010, 2018-2021 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
@@ -16,13 +17,12 @@
 
 package org.glassfish.weld.services;
 
-import java.lang.reflect.Method;
+import com.sun.ejb.codegen.ClassGenerator;
+
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.security.PrivilegedExceptionAction;
 import java.security.ProtectionDomain;
-import java.util.concurrent.atomic.AtomicBoolean;
-
 import org.glassfish.hk2.api.ServiceLocator;
 import org.glassfish.internal.api.ClassLoaderHierarchy;
 import org.jboss.weld.serialization.spi.ProxyServices;
@@ -42,10 +42,6 @@
  */
 public class ProxyServicesImpl implements ProxyServices {
 
-    private static Method defineClassMethod;
-    private static Method defineClassMethodSM;
-    private static final AtomicBoolean CL_METHODS_INITIALIZATION_FINISHED = new AtomicBoolean(false);
-
     private final ClassLoaderHierarchy classLoaderHierarchy;
 
 
@@ -102,7 +98,6 @@
     @Override
     public Class<?> defineClass(final Class<?> originalClass, final String className, final byte[] classBytes,
         final int off, final int len, final ProtectionDomain protectionDomain) throws ClassFormatError {
-        checkClassDefinitionFeature();
         final ClassLoader loader = getClassLoaderforBean(originalClass);
         if (protectionDomain == null) {
             return defineClass(loader, className, classBytes, off, len);
@@ -125,30 +120,6 @@
 
 
     /**
-     * Initialization of access to protected methods of the {@link ClassLoader} class.
-     */
-    private static void checkClassDefinitionFeature() {
-        if (CL_METHODS_INITIALIZATION_FINISHED.compareAndSet(false, true)) {
-            try {
-                final PrivilegedExceptionAction<Void> action = () -> {
-                    final Class<?> cl = Class.forName("java.lang.ClassLoader");
-                    final String name = "defineClass";
-                    defineClassMethod = cl.getDeclaredMethod(name, String.class, byte[].class, int.class, int.class);
-                    defineClassMethod.setAccessible(true);
-                    defineClassMethodSM = cl.getDeclaredMethod(
-                        name, String.class, byte[].class, int.class, int.class, ProtectionDomain.class);
-                    defineClassMethodSM.setAccessible(true);
-                    return null;
-                };
-                AccessController.doPrivileged(action);
-            } catch (final Exception e) {
-                throw new WeldProxyException("Could not initialize access to ClassLoader.defineClass method.", e);
-            }
-        }
-    }
-
-
-    /**
      * @param originalClass
      * @return ClassLoader probably usable with the bean.
      */
@@ -199,7 +170,7 @@
         final byte[] b, final int off, final int len,
         final ProtectionDomain protectionDomain) {
         try {
-            return (Class<?>) defineClassMethodSM.invoke(loader, className, b, 0, len, protectionDomain);
+            return ClassGenerator.defineClass(loader, className, b, 0, len, protectionDomain);
         } catch (final Exception e) {
             throw new WeldProxyException("Could not define class " + className, e);
         }
@@ -210,7 +181,7 @@
         final ClassLoader loader, final String className,
         final byte[] b, final int off, final int len) {
         try {
-            return (Class<?>) defineClassMethod.invoke(loader, className, b, 0, len);
+            return ClassGenerator.defineClass(loader, className, b, 0, len);
         } catch (final Exception e) {
             throw new WeldProxyException("Could not define class " + className, e);
         }
diff --git a/etc/docker/Dockerfile b/etc/docker/Dockerfile
index 975b6a5..ba358db 100644
--- a/etc/docker/Dockerfile
+++ b/etc/docker/Dockerfile
@@ -56,7 +56,7 @@
 ENV MAVEN_HOME /usr/share/maven
 ENV M2_HOME /usr/share/maven
 ENV ANT_HOME /usr/share/ant
-ENV JAVA_TOOL_OPTIONS "-Xmx2G"
+ENV JAVA_TOOL_OPTIONS "-Xmx2G -Xss768k"
 
 ENV HOME /home/jenkins
 WORKDIR /home/jenkins
diff --git a/gfbuild.sh b/gfbuild.sh
index a3ac016..30762b8 100755
--- a/gfbuild.sh
+++ b/gfbuild.sh
@@ -67,7 +67,7 @@
 }
 
 dev_build(){
-  mvn -U clean install -Pstaging ${MVN_EXTRA}
+  mvn -U clean install -Pstaging,fastest -T2C ${MVN_EXTRA}
 }
 
 build_re_dev(){
@@ -83,7 +83,5 @@
 "$@"
 
 if [ ! -z "${JENKINS_HOME}" ] ; then
-  # archive the local repository org.glassfish.main
-  # the output is a tar archive split into 1MB chunks.
-  tar -cz -f - -C ${HOME}/.m2/repository org/glassfish/main | split -b 1m - ${WORKSPACE}/bundles/_maven-repo
+  tar -c --exclude='*.zip' --exclude='*/main/tests/*' --exclude='*/main/distributions/*' --exclude='*/main/extras/*' --exclude='*/main/admingui/*' --newer-mtime '1 day ago' -C ${HOME}/.m2/repository org/glassfish/main | gzip --fast > ${WORKSPACE}/bundles/maven-repo.tar.gz
 fi
diff --git a/gftest.sh b/gftest.sh
index f6ef32c..b778032 100755
--- a/gftest.sh
+++ b/gftest.sh
@@ -33,6 +33,7 @@
        "ejb_group_1"
        "ejb_group_2"
        "ejb_group_3"
+       "ejb_group_embedded"
        "ejb_web_all"
        "cdi_all"
        "ql_gf_full_profile_all"
@@ -51,6 +52,9 @@
     declare -a arr=("$@")
 fi
 
+echo "Removing old glassfish directory: ${S1AS_HOME}";
+rm -rf "${S1AS_HOME}";
+
 printf '\n Running tests for: \n\n'
 printf '* %s\n' "${arr[@]}"
 
diff --git a/nucleus/admin/rest/rest-service/src/main/java/org/glassfish/admin/rest/composite/CompositeUtil.java b/nucleus/admin/rest/rest-service/src/main/java/org/glassfish/admin/rest/composite/CompositeUtil.java
index 117438f..1f39a75 100644
--- a/nucleus/admin/rest/rest-service/src/main/java/org/glassfish/admin/rest/composite/CompositeUtil.java
+++ b/nucleus/admin/rest/rest-service/src/main/java/org/glassfish/admin/rest/composite/CompositeUtil.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2012, 2020 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
@@ -22,6 +23,7 @@
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.lang.annotation.Annotation;
+import java.lang.invoke.MethodHandles;
 import java.lang.reflect.Array;
 import java.lang.reflect.Method;
 import java.lang.reflect.ParameterizedType;
@@ -29,7 +31,6 @@
 import java.net.URL;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import java.security.ProtectionDomain;
 import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -88,9 +89,9 @@
  * @author jdlee
  */
 public class CompositeUtil {
-    private static final Map<String, Class<?>> generatedClasses = new HashMap<String, Class<?>>();
-    private static final Map<String, List<String>> modelExtensions = new HashMap<String, List<String>>();
-    private boolean extensionsLoaded = false;
+    private static final Map<String, Class<?>> generatedClasses = new HashMap<>();
+    private static final Map<String, List<String>> modelExtensions = new HashMap<>();
+    private final boolean extensionsLoaded = false;
     private static volatile Validator beanValidator = null;
     private static final LocalStringManagerImpl adminStrings = new LocalStringManagerImpl(CompositeUtil.class);
 
@@ -117,7 +118,7 @@
     public synchronized <T> T getModel(Class<T> modelIface) {
         String className = modelIface.getName() + "Impl";
         if (!generatedClasses.containsKey(className)) {
-            Map<String, Map<String, Object>> properties = new HashMap<String, Map<String, Object>>();
+            Map<String, Map<String, Object>> properties = new HashMap<>();
 
             Set<Class<?>> interfaces = getModelExtensions(modelIface);
             interfaces.add(modelIface);
@@ -155,7 +156,7 @@
     }
 
     public Set<Class<?>> getRestModels() {
-        Set<Class<?>> classes = new HashSet<Class<?>>();
+        Set<Class<?>> classes = new HashSet<>();
         for (ActiveDescriptor ad : Globals.getDefaultBaseServiceLocator()
                 .getDescriptors(BuilderHelper.createContractFilter(RestModel.class.getName()))) {
             try {
@@ -176,7 +177,7 @@
      * @param method
      */
     public Object getResourceExtensions(Class<?> baseClass, Object data, String method) {
-        List<RestExtension> extensions = new ArrayList<RestExtension>();
+        List<RestExtension> extensions = new ArrayList<>();
 
         for (RestExtension extension : Globals.getDefaultHabitat().<RestExtension>getAllServices(RestExtension.class)) {
             if (baseClass.getName().equals(extension.getParent())) {
@@ -531,7 +532,7 @@
      * @return
      */
     private Set<Class<?>> getModelExtensions(Class<?> baseModel) {
-        Set<Class<?>> exts = new HashSet<Class<?>>();
+        Set<Class<?>> exts = new HashSet<>();
 
         if (!extensionsLoaded) {
             synchronized (modelExtensions) {
@@ -583,7 +584,7 @@
                         String ext = entry[1];
                         List<String> list = modelExtensions.get(base);
                         if (list == null) {
-                            list = new ArrayList<String>();
+                            list = new ArrayList<>();
                             modelExtensions.put(base, list);
                         }
                         list.add(ext);
@@ -605,7 +606,7 @@
     }
 
     private List<Method> getSetters(Class<?> clazz) {
-        List<Method> methods = new ArrayList<Method>();
+        List<Method> methods = new ArrayList<>();
 
         for (Method method : clazz.getMethods()) {
             if (method.getName().startsWith("set")) {
@@ -631,7 +632,7 @@
                 name = name.substring(3);
                 Map<String, Object> property = properties.get(name);
                 if (property == null) {
-                    property = new HashMap<String, Object>();
+                    property = new HashMap<>();
                     properties.put(name, property);
                 }
 
@@ -662,12 +663,12 @@
     }
 
     private Map<String, Map<String, Object>> gatherReferencedAttributes(String bean, String attribute) {
-        Map<String, Map<String, Object>> annos = new HashMap<String, Map<String, Object>>();
+        Map<String, Map<String, Object>> annos = new HashMap<>();
         try {
             Class<?> configBeanClass = Class.forName(bean);
             Method m = configBeanClass.getMethod("get" + attribute);
             for (Annotation a : m.getAnnotations()) {
-                Map<String, Object> anno = new HashMap<String, Object>();
+                Map<String, Object> anno = new HashMap<>();
                 for (Method am : a.annotationType().getDeclaredMethods()) {
                     String methodName = am.getName();
                     Object value = am.invoke(a);
@@ -885,51 +886,9 @@
         return className.replace(".", "/");
     }
 
-    // TODO: This is duplicated from the generator class.
     private Class<?> defineClass(Class<?> similarClass, String className, byte[] classBytes) throws Exception {
-        byte[] byteContent = classBytes;
-        ProtectionDomain pd = similarClass.getProtectionDomain();
-
-        java.lang.reflect.Method jm = null;
-        for (java.lang.reflect.Method jm2 : ClassLoader.class.getDeclaredMethods()) {
-            if (jm2.getName().equals("defineClass") && jm2.getParameterTypes().length == 5) {
-                jm = jm2;
-                break;
-            }
-        }
-        if (jm == null) {//should never happen, makes findbug happy
-            throw new RuntimeException("cannot find method called defineclass...");
-        }
-        final java.lang.reflect.Method clM = jm;
-        try {
-            java.security.AccessController.doPrivileged(new java.security.PrivilegedExceptionAction() {
-                @Override
-                public java.lang.Object run() throws Exception {
-                    if (!clM.isAccessible()) {
-                        clM.setAccessible(true);
-                    }
-                    return null;
-                }
-            });
-
-            RestLogging.restLogger.log(Level.FINEST, "Loading bytecode for {0}", className);
-            final ClassLoader classLoader = similarClass.getClassLoader();
-            //Thread.currentThread().getContextClassLoader();
-            //                    Thread.currentThread().getContextClassLoader();
-            try {
-                clM.invoke(classLoader, className, byteContent, 0, byteContent.length, pd);
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            }
-
-            try {
-                return classLoader.loadClass(className);
-            } catch (ClassNotFoundException cnfEx) {
-                throw new RuntimeException(cnfEx);
-            }
-        } catch (Exception ex) {
-            throw new RuntimeException(ex);
-        }
+        RestLogging.restLogger.log(Level.FINEST, "Loading bytecode for {0}", className);
+        return MethodHandles.privateLookupIn(similarClass, MethodHandles.lookup()).defineClass(classBytes);
     }
 
     private static synchronized void initBeanValidator() {
diff --git a/nucleus/admin/rest/rest-service/src/main/java/org/glassfish/admin/rest/generator/ASMClassWriter.java b/nucleus/admin/rest/rest-service/src/main/java/org/glassfish/admin/rest/generator/ASMClassWriter.java
index 676952f..473dc3d 100644
--- a/nucleus/admin/rest/rest-service/src/main/java/org/glassfish/admin/rest/generator/ASMClassWriter.java
+++ b/nucleus/admin/rest/rest-service/src/main/java/org/glassfish/admin/rest/generator/ASMClassWriter.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2010, 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
@@ -16,7 +17,9 @@
 
 package org.glassfish.admin.rest.generator;
 
+import com.sun.ejb.codegen.ClassGenerator;
 import com.sun.enterprise.util.SystemPropertyConstants;
+
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -25,29 +28,31 @@
 import java.util.List;
 import java.util.Map;
 import java.util.logging.Level;
+
 import org.glassfish.admin.rest.RestLogging;
 import org.glassfish.admin.rest.utils.ResourceUtil;
 import org.glassfish.hk2.api.ServiceLocator;
 import org.objectweb.asm.AnnotationVisitor;
 import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.Type;
 
+import static org.objectweb.asm.Opcodes.*;
+
 /**
  * @author Ludovic Champenois
  */
-public class ASMClassWriter implements ClassWriter, Opcodes {
+public class ASMClassWriter implements ClassWriter {
     private final static String INJECTOR_FIELD = "serviceLocator";
     private final static String FORNAME_INJECTOR_TYPE = "Lorg/glassfish/hk2/api/ServiceLocator;";
     private final static String INTERFACE_INJECTOR_TYPE = "org/glassfish/hk2/api/ServiceLocator";
     private final static String CREATE_AND_INITIALIZE = "createAndInitialize";
     private final static String CREATE_AND_INITIALIZE_SIG = "(Ljava/lang/Class;)Ljava/lang/Object;";
 
-    private org.objectweb.asm.ClassWriter cw = new org.objectweb.asm.ClassWriter(0);
+    private final org.objectweb.asm.ClassWriter cw = new org.objectweb.asm.ClassWriter(0);
     private String className;
     private ServiceLocator habitat;
     private final String generatedPath;
-    private Map<String, String> generatedMethods = new HashMap<String, String>();
+    private final Map<String, String> generatedMethods = new HashMap<>();
     //  private String baseClassName;
     //  private String resourcePath;
 
@@ -441,56 +446,23 @@
         return cw.toByteArray();
     }
 
-    public String defineClass(Class similarClass, byte[] classBytes) throws Exception {
-
-        String generatedClassName = "org.glassfish.admin.rest.resources.generatedASM.";
-        generatedClassName = generatedClassName + className;
-
-        byte[] byteContent = getByteClass();
+    private void defineClass(Class similarClass, byte[] classBytes) throws Exception {
+        String generatedClassName = "org.glassfish.admin.rest.resources.generatedASM." + className;
+        RestLogging.restLogger.log(Level.FINEST, "Generating class {0}", generatedClassName);
+        ClassLoader loader = similarClass.getClassLoader();
         ProtectionDomain pd = similarClass.getProtectionDomain();
-
-        java.lang.reflect.Method jm = null;
-        for (java.lang.reflect.Method jm2 : ClassLoader.class.getDeclaredMethods()) {
-            if (jm2.getName().equals("defineClass") && jm2.getParameterTypes().length == 5) {
-                jm = jm2;
-                break;
-            }
-        }
-        if (jm == null) {//should never happen, makes findbug happy
-            throw new RuntimeException("cannot find method called defineclass...");
-        }
-        final java.lang.reflect.Method clM = jm;
+        byte[] byteContent = getByteClass();
+        ClassGenerator.defineClass(loader, generatedClassName, byteContent, pd);
         try {
-            java.security.AccessController.doPrivileged(new java.security.PrivilegedExceptionAction() {
-
-                public java.lang.Object run() throws Exception {
-                    if (!clM.isAccessible()) {
-                        clM.setAccessible(true);
-                    }
-                    return null;
-                }
-            });
-
-            RestLogging.restLogger.log(Level.FINEST, "Loading bytecode for {0}", generatedClassName);
-            clM.invoke(similarClass.getClassLoader()
-            /*Thread.currentThread().getContextClassLoader()*/, generatedClassName, byteContent, 0, byteContent.length, pd);
-
-            try {
-                similarClass.getClassLoader().loadClass(generatedClassName);
-            } catch (ClassNotFoundException cnfEx) {
-                throw new RuntimeException(cnfEx);
-            }
-
-            return generatedClassName;
-        } catch (Exception ex) {
-            throw new RuntimeException(ex);
+            loader.loadClass(generatedClassName);
+        } catch (ClassNotFoundException cnfEx) {
+            throw new GeneratorException(cnfEx);
         }
-
     }
 
-    /*
-     dump bytecode in class files so that we can  decompile them to check the real content
-    */
+    /**
+     * dump bytecode in class files so that we can  decompile them to check the real content
+     */
     private void debug(String clsName, byte[] classData) {
 
         // the path is horribly long.  Let's just write t directly into the
diff --git a/nucleus/common/internal-api/src/main/java/org/glassfish/internal/api/ClassLoaderHierarchy.java b/nucleus/common/internal-api/src/main/java/org/glassfish/internal/api/ClassLoaderHierarchy.java
index 52736ce..f312c78 100644
--- a/nucleus/common/internal-api/src/main/java/org/glassfish/internal/api/ClassLoaderHierarchy.java
+++ b/nucleus/common/internal-api/src/main/java/org/glassfish/internal/api/ClassLoaderHierarchy.java
@@ -26,7 +26,7 @@
 import com.sun.enterprise.module.ResolveError;
 
 /**
- * This class is responsible foe creation of class loader hierarchy
+ * This class is responsible for creation of class loader hierarchy
  * of an application.
  *
  * @author Sanjeeb.Sahoo@Sun.COM
@@ -132,7 +132,7 @@
         * @return class loader capable of loading public APIs identified by the deployers
         * @throws com.sun.enterprise.module.ResolveError if one of the deployer's public API module is not found.
         */
-       public ClassLoader createApplicationParentCL(ClassLoader parent, DeploymentContext context)
+       ClassLoader createApplicationParentCL(ClassLoader parent, DeploymentContext context)
            throws ResolveError;
 
 }
diff --git a/nucleus/flashlight/framework/src/main/java/org/glassfish/flashlight/impl/core/ProviderImplGenerator.java b/nucleus/flashlight/framework/src/main/java/org/glassfish/flashlight/impl/core/ProviderImplGenerator.java
index 58d6ee7..08f819d 100644
--- a/nucleus/flashlight/framework/src/main/java/org/glassfish/flashlight/impl/core/ProviderImplGenerator.java
+++ b/nucleus/flashlight/framework/src/main/java/org/glassfish/flashlight/impl/core/ProviderImplGenerator.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2009, 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
@@ -21,8 +22,15 @@
  *         Date: Jul 20, 2008
  */
 import com.sun.enterprise.util.SystemPropertyConstants;
-import com.sun.enterprise.util.LocalStringManagerImpl;
 import com.sun.enterprise.util.io.FileUtils;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.lang.invoke.MethodHandles;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.glassfish.flashlight.FlashlightLoggerInfo;
 import org.glassfish.flashlight.provider.FlashlightProbe;
 import org.glassfish.flashlight.provider.ProbeRegistry;
 import org.objectweb.asm.ClassWriter;
@@ -32,16 +40,6 @@
 import org.objectweb.asm.commons.GeneratorAdapter;
 import org.objectweb.asm.commons.Method;
 
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.PrintStream;
-import java.lang.reflect.InvocationTargetException;
-import java.security.PrivilegedActionException;
-import java.security.ProtectionDomain;
-import java.util.logging.Logger;
-import java.util.logging.Level;
-import org.glassfish.flashlight.FlashlightLoggerInfo;
-
 public class ProviderImplGenerator {
     private static final Logger logger = FlashlightLoggerInfo.getLogger();
 
@@ -50,49 +48,13 @@
         String generatedClassName = provider.getModuleProviderName() + "_Flashlight_" + provider.getModuleName() + "_"
                 + "Probe_" + ((provider.getProbeProviderName() == null) ? providerClazz.getName() : provider.getProbeProviderName());
         generatedClassName = providerClazz.getName() + "_" + generatedClassName;
-
         byte[] classData = generateClassData(provider, providerClazz, generatedClassName);
-
-        ProtectionDomain pd = providerClazz.getProtectionDomain();
-
-        java.lang.reflect.Method jm = null;
-        for (java.lang.reflect.Method jm2 : ClassLoader.class.getDeclaredMethods()) {
-            if (jm2.getName().equals("defineClass") && jm2.getParameterTypes().length == 5) {
-                jm = jm2;
-                break;
-            }
-        }
-
-        if (jm == null)
-            throw new RuntimeException();
-
-        final java.lang.reflect.Method clM = jm;
         try {
-            java.security.AccessController.doPrivileged(
-                    new java.security.PrivilegedExceptionAction() {
-                        public java.lang.Object run() throws Exception {
-                            if (!clM.isAccessible()) {
-                                clM.setAccessible(true);
-                            }
-                            return null;
-                        }
-                    });
-
-            clM.invoke(providerClazz.getClassLoader(), generatedClassName, classData, 0,
-                    classData.length, pd);
-
+            MethodHandles.privateLookupIn(providerClazz, MethodHandles.lookup()).defineClass(classData);
             return generatedClassName;
-        }
-        catch (PrivilegedActionException pEx) {
-            throw new RuntimeException(pEx);
-        }
-        catch (IllegalAccessException illegalAccessException) {
+        } catch (IllegalAccessException illegalAccessException) {
             throw new RuntimeException(illegalAccessException);
         }
-        catch (InvocationTargetException invtEx) {
-            throw new RuntimeException(invtEx);
-        }
-
     }
 
     public byte[] generateClassData(FlashlightProbeProvider provider, Class providerClazz, String generatedClassName) {
@@ -173,8 +135,9 @@
 
 
         if (Boolean.parseBoolean(System.getenv("AS_DEBUG"))) {
-            if (logger.isLoggable(Level.FINE))
+            if (logger.isLoggable(Level.FINE)) {
                 logger.fine("Generated ClassDATA " + clsName);
+            }
 
             // the path is horribly long.  Let's just write t directly into the
             // lib dir.  It is not for loading as a class but just for us humans
@@ -183,8 +146,9 @@
             clsName = clsName.replace('\\', '/'); // just in case Windows?  unlikely...
             index = clsName.lastIndexOf("/");
 
-            if (index >= 0)
+            if (index >= 0) {
                 clsName = clsName.substring(index + 1);
+            }
             FileOutputStream fos = null;
             try {
                 String rootPath = System.getProperty(SystemPropertyConstants.INSTALL_ROOT_PROPERTY)
@@ -192,8 +156,9 @@
 
                 String fileName = rootPath + clsName + ".class";
 
-                if (logger.isLoggable(Level.FINE))
+                if (logger.isLoggable(Level.FINE)) {
                     logger.fine("ClassFile: " + fileName);
+                }
 
                 File file = new File(fileName);
 
@@ -208,8 +173,9 @@
             }
             finally {
                 try {
-                    if (fos != null)
+                    if (fos != null) {
                         fos.close();
+                    }
                 }
                 catch (Exception e) {
                     // nothing can be done...
diff --git a/runtests.sh b/runtests.sh
index c330bd9..16e912d 100755
--- a/runtests.sh
+++ b/runtests.sh
@@ -22,8 +22,9 @@
 echo "Second argument is a test set id, one of:
 cdi_all, ql_gf_full_profile_all, \n
 \n
-web_jsp, deployment_all, ejb_group_1
-ejb_group_2, ejb_group_3, ejb_web_all, cdi_all, ql_gf_full_profile_all, ql_gf_nucleus_all, \
+web_jsp, deployment_all, \n
+ejb_group_1. ejb_group_2, ejb_group_3, ejb_group_embedded, \n
+cdi_all, ql_gf_full_profile_all, ql_gf_nucleus_all, \
 ql_gf_web_profile_all, nucleus_admin_all, jdbc_all, batch_all, persistence_all, \
 connector_group_1, connector_group_2, connector_group_3, connector_group_4";