diff --git a/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/AppClientContainer.java b/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/AppClientContainer.java
index e5e6a93..e860f2d 100644
--- a/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/AppClientContainer.java
+++ b/appserver/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/AppClientContainer.java
@@ -377,13 +377,10 @@
 
         prepareURLStreamHandling();
 
-        //This is required for us to enable interrupt jaxws service
-        //creation calls
-        System.setProperty("jakarta.xml.ws.spi.Provider",
-                           "com.sun.enterprise.webservice.spi.ProviderImpl");
+        //This is required for us to enable interrupt jaxws service creation calls
+        System.setProperty("jakarta.xml.ws.spi.Provider", "com.sun.xml.ws.spi.ProviderImpl");
         //InjectionManager's injectClass will be called from getMainMethod
 
-
         // Load any managed beans
         ManagedBeanManager managedBeanManager = habitat.getService(ManagedBeanManager.class);
         managedBeanManager.loadManagedBeans(desc.getApplication());
diff --git a/appserver/tests/appserv-tests/devtests/deployment/ejb30/ear/security/web/MyFilter.java b/appserver/tests/appserv-tests/devtests/deployment/ejb30/ear/security/web/MyFilter.java
index 38c4db5..cf4e2ce 100644
--- a/appserver/tests/appserv-tests/devtests/deployment/ejb30/ear/security/web/MyFilter.java
+++ b/appserver/tests/appserv-tests/devtests/deployment/ejb30/ear/security/web/MyFilter.java
@@ -64,9 +64,7 @@
         HttpServletRequest httpRequest = (HttpServletRequest)request;
         HttpSession httpSession = httpRequest.getSession(true);
         if (httpRequest.isUserInRole("j2ee")) {
-            httpSession.putValue("deployment.ejb30.ear.security",
-                "filterMessage=hello world: " + loginTimeout);
-
+            httpSession.setAttribute("deployment.ejb30.ear.security", "filterMessage=hello world: " + loginTimeout);
         }
         chain.doFilter(request, response);
     }
diff --git a/appserver/tests/appserv-tests/devtests/deployment/ejb30/war/jsp/web/MyFilter.java b/appserver/tests/appserv-tests/devtests/deployment/ejb30/war/jsp/web/MyFilter.java
index a625be7..c7d262b 100644
--- a/appserver/tests/appserv-tests/devtests/deployment/ejb30/war/jsp/web/MyFilter.java
+++ b/appserver/tests/appserv-tests/devtests/deployment/ejb30/war/jsp/web/MyFilter.java
@@ -75,8 +75,7 @@
         }
         HttpServletRequest httpRequest = (HttpServletRequest)request;
         HttpSession httpSession = httpRequest.getSession(true);
-        httpSession.putValue("deployment.ejb30.web.jsp", "Hello World: " +
-            loginTimeout);
+        httpSession.setAttribute("deployment.ejb30.web.jsp", "Hello World: " + loginTimeout);
         chain.doFilter(request, response);
     }
 
diff --git a/appserver/tests/appserv-tests/devtests/deployment/ejb30/war/servlet/web/MyFilter.java b/appserver/tests/appserv-tests/devtests/deployment/ejb30/war/servlet/web/MyFilter.java
index 1aa3295..04021b9 100644
--- a/appserver/tests/appserv-tests/devtests/deployment/ejb30/war/servlet/web/MyFilter.java
+++ b/appserver/tests/appserv-tests/devtests/deployment/ejb30/war/servlet/web/MyFilter.java
@@ -63,8 +63,7 @@
         }
         HttpServletRequest httpRequest = (HttpServletRequest)request;
         HttpSession httpSession = httpRequest.getSession(true);
-        httpSession.putValue("deployment.ejb30.war.servlet",
-            "Filter: Hello World: " + loginTimeout);
+        httpSession.setAttribute("deployment.ejb30.war.servlet", "Filter: Hello World: " + loginTimeout);
         chain.doFilter(request, response);
     }
 
diff --git a/appserver/tests/appserv-tests/devtests/security/jaccApi/src/DummyPolicyConfigurationFactory.java b/appserver/tests/appserv-tests/devtests/security/jaccApi/src/DummyPolicyConfigurationFactory.java
index b77039e..6c9f0b3 100644
--- a/appserver/tests/appserv-tests/devtests/security/jaccApi/src/DummyPolicyConfigurationFactory.java
+++ b/appserver/tests/appserv-tests/devtests/security/jaccApi/src/DummyPolicyConfigurationFactory.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022 Contributors to the Eclipse Foundation
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -21,14 +22,24 @@
 import jakarta.security.jacc.PolicyContextException;
 
 public class DummyPolicyConfigurationFactory extends PolicyConfigurationFactory {
-    public PolicyConfiguration
-            getPolicyConfiguration(String contextID, boolean remove)
-                throws jakarta.security.jacc.PolicyContextException {
+
+    public PolicyConfiguration getPolicyConfiguration() {
         return null;
     }
 
-    public boolean inService(String contextID)
-            throws jakarta.security.jacc.PolicyContextException {
+
+    public PolicyConfiguration getPolicyConfiguration(String contextID) {
+        return null;
+    }
+
+
+    public PolicyConfiguration getPolicyConfiguration(String contextID, boolean remove)
+        throws jakarta.security.jacc.PolicyContextException {
+        return null;
+    }
+
+
+    public boolean inService(String contextID) throws jakarta.security.jacc.PolicyContextException {
         return false;
     }
 }
diff --git a/appserver/tests/appserv-tests/devtests/security/jmac/httpServletChallenge/src/HttpServletChallengeTestAuthModule.java b/appserver/tests/appserv-tests/devtests/security/jmac/httpServletChallenge/src/HttpServletChallengeTestAuthModule.java
index f347a91..12aa06e 100644
--- a/appserver/tests/appserv-tests/devtests/security/jmac/httpServletChallenge/src/HttpServletChallengeTestAuthModule.java
+++ b/appserver/tests/appserv-tests/devtests/security/jmac/httpServletChallenge/src/HttpServletChallengeTestAuthModule.java
@@ -86,8 +86,7 @@
             }
 
             HttpSession session = request.getSession(false);
-            boolean secondPhase = (session != null &&
-                    session.getValue("FIRST_DONE") != null);
+            boolean secondPhase = (session != null && session.getAttribute("FIRST_DONE") != null);
             String loginName = ((secondPhase)? username + "_2" : username);
             char[] pwd = new char[password.length()];
             password.getChars(0, password.length(), pwd, 0);
@@ -117,7 +116,7 @@
                     response.setHeader("WWW-Authenticate", "Basic realm=\"default\"");
                     if (session == null) {
                         session = request.getSession(true);
-                        session.putValue("FIRST_DONE", Boolean.TRUE);
+                        session.setAttribute("FIRST_DONE", Boolean.TRUE);
                     }
                     response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
                     return AuthStatus.SEND_SUCCESS;
diff --git a/appserver/tests/appserv-tests/devtests/security/jmac/httpServletForm/src/HttpServletFormTestAuthModule.java b/appserver/tests/appserv-tests/devtests/security/jmac/httpServletForm/src/HttpServletFormTestAuthModule.java
index b09ea53..0615858 100644
--- a/appserver/tests/appserv-tests/devtests/security/jmac/httpServletForm/src/HttpServletFormTestAuthModule.java
+++ b/appserver/tests/appserv-tests/devtests/security/jmac/httpServletForm/src/HttpServletFormTestAuthModule.java
@@ -75,8 +75,7 @@
         try {
             HttpSession session = request.getSession(false);
             if (session != null) {
-                Subject savedClientSubject =
-                        (Subject)session.getValue(SAVED_SUBJECT);
+                Subject savedClientSubject = (Subject) session.getAttribute(SAVED_SUBJECT);
                 if (savedClientSubject != null) {
                     System.out.println("already has saved subject");
                     // just copy principals for testing
@@ -96,7 +95,7 @@
                 if (session == null) {
                     session = request.getSession(true);
                 }
-                session.putValue(SAVED_REQUEST, new SavedRequest(request));
+                session.setAttribute(SAVED_REQUEST, new SavedRequest(request));
                 RequestDispatcher rd = request.getRequestDispatcher("login.jsp");
                 rd.forward(request, response);
                 System.out.println("Form: SEND_CONTINUE");
@@ -117,9 +116,9 @@
                 System.out.println("login success: " + username + ", " + password);
                 SavedRequest sreq = null;
                 if (session != null) {
-                    sreq = (SavedRequest)session.getValue(SAVED_REQUEST);
+                    sreq = (SavedRequest) session.getAttribute(SAVED_REQUEST);
                     // for testing only as Subject is not Serializable
-                    session.putValue(SAVED_SUBJECT, clientSubject);
+                    session.setAttribute(SAVED_SUBJECT, clientSubject);
                 }
                 if (sreq != null) {
                     StringBuffer sb = new StringBuffer(sreq.getRequestURI());
diff --git a/appserver/tests/appserv-tests/devtests/web/jsessionIdParameter/docroot/test.jsp b/appserver/tests/appserv-tests/devtests/web/jsessionIdParameter/docroot/test.jsp
index b8474cf..20afe7b 100644
--- a/appserver/tests/appserv-tests/devtests/web/jsessionIdParameter/docroot/test.jsp
+++ b/appserver/tests/appserv-tests/devtests/web/jsessionIdParameter/docroot/test.jsp
@@ -19,7 +19,7 @@
 id=<%=session.getId()%>
 <% String a = request.getParameter("a");
    if (a != null) {
-       session.putValue("a", a);
+       session.setAttribute("a", a);
    }
-   out.println("a=" + session.getValue("a"));
+   out.println("a=" + session.getAttribute("a"));
 %>
