diff --git a/appserver/concurrent/concurrent-impl/src/main/java/org/glassfish/concurrent/admin/ContextServiceManager.java b/appserver/concurrent/concurrent-impl/src/main/java/org/glassfish/concurrent/admin/ContextServiceManager.java
index b3ef08e..41f59c3 100644
--- a/appserver/concurrent/concurrent-impl/src/main/java/org/glassfish/concurrent/admin/ContextServiceManager.java
+++ b/appserver/concurrent/concurrent-impl/src/main/java/org/glassfish/concurrent/admin/ContextServiceManager.java
@@ -36,7 +36,7 @@
 import org.jvnet.hk2.config.types.Property;
 
 import javax.inject.Inject;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 import java.beans.PropertyVetoException;
 import java.util.HashMap;
 import java.util.Map;
diff --git a/appserver/concurrent/concurrent-impl/src/main/java/org/glassfish/concurrent/admin/ManagedExecutorServiceBaseManager.java b/appserver/concurrent/concurrent-impl/src/main/java/org/glassfish/concurrent/admin/ManagedExecutorServiceBaseManager.java
index 60b2771..b2e3470 100644
--- a/appserver/concurrent/concurrent-impl/src/main/java/org/glassfish/concurrent/admin/ManagedExecutorServiceBaseManager.java
+++ b/appserver/concurrent/concurrent-impl/src/main/java/org/glassfish/concurrent/admin/ManagedExecutorServiceBaseManager.java
@@ -35,7 +35,7 @@
 import org.jvnet.hk2.config.types.Property;
 
 import javax.inject.Inject;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 import java.beans.PropertyVetoException;
 import java.util.HashMap;
 import java.util.Map;
diff --git a/appserver/concurrent/concurrent-impl/src/main/java/org/glassfish/concurrent/admin/ManagedThreadFactoryManager.java b/appserver/concurrent/concurrent-impl/src/main/java/org/glassfish/concurrent/admin/ManagedThreadFactoryManager.java
index a4b471c..c6d791d 100644
--- a/appserver/concurrent/concurrent-impl/src/main/java/org/glassfish/concurrent/admin/ManagedThreadFactoryManager.java
+++ b/appserver/concurrent/concurrent-impl/src/main/java/org/glassfish/concurrent/admin/ManagedThreadFactoryManager.java
@@ -36,7 +36,7 @@
 import org.jvnet.hk2.config.types.Property;
 
 import javax.inject.Inject;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 import java.beans.PropertyVetoException;
 import java.util.HashMap;
 import java.util.Map;
diff --git a/appserver/connectors/connectors-inbound-runtime/src/main/java/com/sun/enterprise/connectors/inbound/MessageEndpointInvocationHandler.java b/appserver/connectors/connectors-inbound-runtime/src/main/java/com/sun/enterprise/connectors/inbound/MessageEndpointInvocationHandler.java
index d7d0830..84e3400 100755
--- a/appserver/connectors/connectors-inbound-runtime/src/main/java/com/sun/enterprise/connectors/inbound/MessageEndpointInvocationHandler.java
+++ b/appserver/connectors/connectors-inbound-runtime/src/main/java/com/sun/enterprise/connectors/inbound/MessageEndpointInvocationHandler.java
@@ -32,7 +32,7 @@
 
 /**
  * This class handles the implementation of two interfaces:
- * 1) javax.resource.spi.endpoint.MessageEndpoint;
+ * 1) jakarta.resource.spi.endpoint.MessageEndpoint;
  * 2) any message listener type (e.g. jakarta.jms.MessageListener,
  * OR javax.xml.messaging.OnewayListener)
  *
@@ -49,7 +49,7 @@
     private MessageBeanProtocolManager messageBeanPM_;
 
     private static final String MESSAGE_ENDPOINT
-            = "javax.resource.spi.endpoint.MessageEndpoint";
+            = "jakarta.resource.spi.endpoint.MessageEndpoint";
 
     private static final String THROW_TRANSACTED_EXCEPTIONS_PROP
             = "resourceadapter.throw.transacted.exceptions";
diff --git a/appserver/connectors/connectors-runtime/osgi.bundle b/appserver/connectors/connectors-runtime/osgi.bundle
index cd72a1b..9910479 100644
--- a/appserver/connectors/connectors-runtime/osgi.bundle
+++ b/appserver/connectors/connectors-runtime/osgi.bundle
@@ -30,7 +30,7 @@
 # we need to add it to the import list explicitly, as bnd can't
 # discover such dependencies.
 Import-Package: \
-    javax.resource.spi.endpoint, \
+    jakarta.resource.spi.endpoint, \
     *
 
 # dependent flashlight package resolved at runtime
diff --git a/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/connectors/XATerminatorProxy.java b/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/connectors/XATerminatorProxy.java
index f2535a0..2e886c5 100644
--- a/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/connectors/XATerminatorProxy.java
+++ b/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/connectors/XATerminatorProxy.java
@@ -51,35 +51,35 @@
     }
 
     /**
-     * @see javax.resource.spi.XATerminator
+     * @see jakarta.resource.spi.XATerminator
      */
     public void commit(Xid xid, boolean onePhase) throws XAException {
         xat.commit(xid, onePhase);
     }
 
     /**
-     * @see javax.resource.spi.XATerminator
+     * @see jakarta.resource.spi.XATerminator
      */
     public void forget(Xid xid) throws XAException {
         xat.forget(xid);
     }
 
     /**
-     * @see javax.resource.spi.XATerminator
+     * @see jakarta.resource.spi.XATerminator
      */
     public int prepare(Xid xid) throws XAException {
         return xat.prepare(xid);
     }
 
     /**
-     * @see javax.resource.spi.XATerminator
+     * @see jakarta.resource.spi.XATerminator
      */
     public Xid[] recover(int flag) throws XAException {
         return xat.recover(flag);
     }
 
     /**
-     * @see javax.resource.spi.XATerminator
+     * @see jakarta.resource.spi.XATerminator
      */
     public void rollback(Xid xid) throws XAException {
         xat.rollback(xid);
diff --git a/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/connectors/deployment/util/ConnectorValidator.java b/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/connectors/deployment/util/ConnectorValidator.java
index 08b5723..6ecace8 100644
--- a/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/connectors/deployment/util/ConnectorValidator.java
+++ b/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/connectors/deployment/util/ConnectorValidator.java
@@ -137,7 +137,7 @@
                     }
                     if(!validClass){
                         throw new IllegalArgumentException("Class ["+activationSpecClass+"] does not " +
-                                "implement javax.resource.spi.ActivationSpec interface, but " +
+                                "implement jakarta.resource.spi.ActivationSpec interface, but " +
                                 "defined in MessageListener ["+ml.getMessageListenerType()+"] of RAR ["+ descriptor.getName() + "]");
                     }
                 }else{
diff --git a/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/connectors/service/ConnectorConnectionPoolAdminServiceImpl.java b/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/connectors/service/ConnectorConnectionPoolAdminServiceImpl.java
index 4fe7823..3736365 100755
--- a/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/connectors/service/ConnectorConnectionPoolAdminServiceImpl.java
+++ b/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/connectors/service/ConnectorConnectionPoolAdminServiceImpl.java
@@ -433,7 +433,7 @@
      * @param mcf
      * @param prin
      * @return
-     * @throws javax.resource.ResourceException
+     * @throws jakarta.resource.ResourceException
      */
     protected Subject getDefaultSubject(PoolInfo poolInfo, ManagedConnectionFactory mcf,
             ResourcePrincipal prin) throws ResourceException {
@@ -471,7 +471,7 @@
      * @param mcf
      * @param defaultSubject
      * @return
-     * @throws javax.resource.ResourceException
+     * @throws jakarta.resource.ResourceException
      */
     protected ManagedConnection getManagedConnection(ManagedConnectionFactory mcf, 
             Subject defaultSubject, ConnectionRequestInfo cReqInfo) throws ResourceException {
@@ -491,7 +491,7 @@
      * pool name.
      * @param poolName
      * @return
-     * @throws javax.resource.ResourceException
+     * @throws jakarta.resource.ResourceException
      *//*
 
     protected ManagedConnectionFactory getManagedConnectionFactory(String poolName) 
diff --git a/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/connectors/util/ConnectionPoolObjectsUtils.java b/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/connectors/util/ConnectionPoolObjectsUtils.java
index 2108f56..6aa3363 100644
--- a/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/connectors/util/ConnectionPoolObjectsUtils.java
+++ b/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/connectors/util/ConnectionPoolObjectsUtils.java
@@ -173,9 +173,9 @@
 
     /**
      * Return the interger representation container transaction support value equivalent to
-     * the javax.resource.spi.TransactionSupport enum value.
+     * the jakarta.resource.spi.TransactionSupport enum value.
      *
-     * @param mcfTS javax.resource.spi.TransactionSupport
+     * @param mcfTS jakarta.resource.spi.TransactionSupport
      * @return container equivalent value
      */
     public static int convertSpecTxSupportToContainerTxSupport(
diff --git a/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/resource/ResourceHandle.java b/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/resource/ResourceHandle.java
index dee6ba9..1afd39b 100644
--- a/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/resource/ResourceHandle.java
+++ b/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/resource/ResourceHandle.java
@@ -122,12 +122,12 @@
         supportsXAResource = supportsXA;
 
         if (resource instanceof
-                javax.resource.spi.LazyEnlistableManagedConnection) {
+                jakarta.resource.spi.LazyEnlistableManagedConnection) {
             supportsLazyEnlistment_ = true;
         }
 
         if (resource instanceof
-                javax.resource.spi.DissociatableManagedConnection) {
+                jakarta.resource.spi.DissociatableManagedConnection) {
             supportsLazyAssoc_ = true;
         }
     } */
diff --git a/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/resource/pool/PoolManager.java b/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/resource/pool/PoolManager.java
index fa86b45..572e173 100644
--- a/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/resource/pool/PoolManager.java
+++ b/appserver/connectors/connectors-runtime/src/main/java/com/sun/enterprise/resource/pool/PoolManager.java
@@ -51,8 +51,8 @@
     static public final int KERBV5 = 1;
 
     // Credential Interest levels
-    static public final String PASSWORD_CREDENTIAL = "javax.resource.spi.security.PasswordCredential";
-    static public final String GENERIC_CREDENTIAL = "javax.resource.spi.security.GenericCredential";
+    static public final String PASSWORD_CREDENTIAL = "jakarta.resource.spi.security.PasswordCredential";
+    static public final String GENERIC_CREDENTIAL = "jakarta.resource.spi.security.GenericCredential";
 
     /**
      * Flush Connection pool by reinitializing the connections 
diff --git a/appserver/connectors/work-management/src/main/java/com/sun/enterprise/connectors/work/WorkManagerProxy.java b/appserver/connectors/work-management/src/main/java/com/sun/enterprise/connectors/work/WorkManagerProxy.java
index c2b5458..9cd61d6 100755
--- a/appserver/connectors/work-management/src/main/java/com/sun/enterprise/connectors/work/WorkManagerProxy.java
+++ b/appserver/connectors/work-management/src/main/java/com/sun/enterprise/connectors/work/WorkManagerProxy.java
@@ -41,14 +41,14 @@
     }
 
     /**
-     * @see javax.resource.spi.work.WorkManager
+     * @see jakarta.resource.spi.work.WorkManager
      */
     public void doWork(Work work) throws WorkException {
         wm.doWork(work);
     }
 
     /**
-     * @see javax.resource.spi.work.WorkManager
+     * @see jakarta.resource.spi.work.WorkManager
      */
     public void doWork(Work work, long startTimeout, ExecutionContext executionContext,
                        WorkListener workListener) throws WorkException {
@@ -56,14 +56,14 @@
     }
 
     /**
-     * @see javax.resource.spi.work.WorkManager
+     * @see jakarta.resource.spi.work.WorkManager
      */
     public long startWork(Work work) throws WorkException {
         return wm.startWork(work);
     }
 
     /**
-     * @see javax.resource.spi.work.WorkManager
+     * @see jakarta.resource.spi.work.WorkManager
      */
     public long startWork(Work work, long startTimeout, ExecutionContext executionContext,
                           WorkListener workListener) throws WorkException {
@@ -71,13 +71,13 @@
     }
 
     /**
-     * @see javax.resource.spi.work.WorkManager
+     * @see jakarta.resource.spi.work.WorkManager
      */
     public void scheduleWork(Work work) throws WorkException {
         wm.scheduleWork(work);
     }
     /**
-     * @see javax.resource.spi.work.WorkManager
+     * @see jakarta.resource.spi.work.WorkManager
      */
     public void scheduleWork(Work work, long startTimeout, ExecutionContext executionContext,
                              WorkListener workListener) throws WorkException {
diff --git a/appserver/core/api-exporter-fragment/pom.xml b/appserver/core/api-exporter-fragment/pom.xml
index 6bb8b3c..8932ac9 100755
--- a/appserver/core/api-exporter-fragment/pom.xml
+++ b/appserver/core/api-exporter-fragment/pom.xml
@@ -194,12 +194,12 @@
 javax.print.attribute; \
 javax.print.attribute.standard; \
 javax.print.event; \
-javax.resource; \
-javax.resource.cci; \
-javax.resource.spi; \
-javax.resource.spi.endpoint; \
-javax.resource.spi.security; \
-javax.resource.spi.work; \
+jakarta.resource; \
+jakarta.resource.cci; \
+jakarta.resource.spi; \
+jakarta.resource.spi.endpoint; \
+jakarta.resource.spi.security; \
+jakarta.resource.spi.work; \
 javax.rmi; \
 javax.rmi.CORBA; \
 javax.rmi.ssl; \
diff --git a/appserver/deployment/dol/src/main/java/com/sun/enterprise/deployment/PoolManagerConstants.java b/appserver/deployment/dol/src/main/java/com/sun/enterprise/deployment/PoolManagerConstants.java
index 69df07d..a63d79d 100644
--- a/appserver/deployment/dol/src/main/java/com/sun/enterprise/deployment/PoolManagerConstants.java
+++ b/appserver/deployment/dol/src/main/java/com/sun/enterprise/deployment/PoolManagerConstants.java
@@ -38,7 +38,7 @@
     static public final int KERBV5 = 1;
 
     // Credential Interest levels
-    static public final String PASSWORD_CREDENTIAL = "javax.resource.spi.security.PasswordCredential";
-    static public final String GENERIC_CREDENTIAL = "javax.resource.spi.security.GenericCredential";
+    static public final String PASSWORD_CREDENTIAL = "jakarta.resource.spi.security.PasswordCredential";
+    static public final String GENERIC_CREDENTIAL = "jakarta.resource.spi.security.GenericCredential";
     
 }
diff --git a/appserver/deployment/dol/src/main/java/com/sun/enterprise/deployment/ResourceReferenceDescriptor.java b/appserver/deployment/dol/src/main/java/com/sun/enterprise/deployment/ResourceReferenceDescriptor.java
index 1f8c24b..3e57427 100644
--- a/appserver/deployment/dol/src/main/java/com/sun/enterprise/deployment/ResourceReferenceDescriptor.java
+++ b/appserver/deployment/dol/src/main/java/com/sun/enterprise/deployment/ResourceReferenceDescriptor.java
@@ -53,7 +53,7 @@
     private static final String URL_RESOURCE_TYPE = "java.net.URL";
     
     //START OF IASRI 4633229
-    private static final String CONNECTOR_RESOURCE_TYPE = "javax.resource.cci.ConnectionFactory";    
+    private static final String CONNECTOR_RESOURCE_TYPE = "jakarta.resource.cci.ConnectionFactory";    
     //END OF IASRI 4633229
     private static final String MAIL_RESOURCE_TYPE = "jakarta.mail.Session";    
 
diff --git a/appserver/deployment/dol/src/main/java/com/sun/enterprise/deployment/annotation/handlers/ResourceHandler.java b/appserver/deployment/dol/src/main/java/com/sun/enterprise/deployment/annotation/handlers/ResourceHandler.java
index e7f1b55..e03f0f8 100644
--- a/appserver/deployment/dol/src/main/java/com/sun/enterprise/deployment/annotation/handlers/ResourceHandler.java
+++ b/appserver/deployment/dol/src/main/java/com/sun/enterprise/deployment/annotation/handlers/ResourceHandler.java
@@ -291,7 +291,7 @@
                 resourceType == webServiceContext ||
                 resourceType.getName().equals("jakarta.mail.Session") || 
                 resourceType.getName().equals("java.net.URL") ||
-                resourceType.getName().equals("javax.resource.cci.ConnectionFactory") ||
+                resourceType.getName().equals("jakarta.resource.cci.ConnectionFactory") ||
                 resourceType == org.omg.CORBA_2_3.ORB.class || 
                 resourceType == org.omg.CORBA.ORB.class || 
                 resourceType.getName().equals("jakarta.jms.XAConnectionFactory") ||
diff --git a/appserver/jdbc/jdbc-ra/jdbc-core/src/main/java/com/sun/gjc/spi/ManagedConnectionFactoryImpl.java b/appserver/jdbc/jdbc-ra/jdbc-core/src/main/java/com/sun/gjc/spi/ManagedConnectionFactoryImpl.java
index c5867fc..1300f35 100644
--- a/appserver/jdbc/jdbc-ra/jdbc-core/src/main/java/com/sun/gjc/spi/ManagedConnectionFactoryImpl.java
+++ b/appserver/jdbc/jdbc-ra/jdbc-core/src/main/java/com/sun/gjc/spi/ManagedConnectionFactoryImpl.java
@@ -110,7 +110,7 @@
      * @return Generic JDBC Connector implementation of <code>javax.sql.DataSource</code>
      */
     public Object createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager) {
-        logFine("In createConnectionFactory(javax.resource.spi.ConnectionManager cxManager)");
+        logFine("In createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager)");
 
         javax.sql.DataSource cf = jdbcObjectsFactory.getDataSourceInstance(this, cxManager);
 
diff --git a/appserver/jdbc/jdbc-ra/jdbc-core/src/main/java/com/sun/gjc/spi/ManagedConnectionImpl.java b/appserver/jdbc/jdbc-ra/jdbc-core/src/main/java/com/sun/gjc/spi/ManagedConnectionImpl.java
index 21df48b..5b4f378 100644
--- a/appserver/jdbc/jdbc-ra/jdbc-core/src/main/java/com/sun/gjc/spi/ManagedConnectionImpl.java
+++ b/appserver/jdbc/jdbc-ra/jdbc-core/src/main/java/com/sun/gjc/spi/ManagedConnectionImpl.java
@@ -409,7 +409,7 @@
      * @return Connection    the connection handle <code>Object</code>
      * @throws ResourceException if there is an error in allocating the
      *                           physical connection from the pooled connection
-     * @throws javax.resource.spi.SecurityException
+     * @throws jakarta.resource.spi.SecurityException
      *                           if there is a mismatch between the
      *                           password credentials or reauthentication is requested
      */
@@ -422,7 +422,7 @@
          PasswordCredential passwdCred = SecurityUtils.getPasswordCredential(this.mcf, sub, cxRequestInfo);
 
          if(SecurityUtils.isPasswordCredentialEqual(this.passwdCredential, passwdCred) == false) {
-         throw new javax.resource.spi.SecurityException("Re-authentication not supported");
+         throw new jakarta.resource.spi.SecurityException("Re-authentication not supported");
          }
          **/
 
diff --git a/appserver/jdbc/jdbc-ra/jdbc-ra-distribution/xml/ra-cp.xml b/appserver/jdbc/jdbc-ra/jdbc-ra-distribution/xml/ra-cp.xml
index f6448fc..171123d 100644
--- a/appserver/jdbc/jdbc-ra/jdbc-ra-distribution/xml/ra-cp.xml
+++ b/appserver/jdbc/jdbc-ra/jdbc-ra-distribution/xml/ra-cp.xml
@@ -235,7 +235,7 @@
 
                 <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
 
-                <credential-interface>javax.resource.spi.security.PasswordCredential</credential-interface>
+                <credential-interface>jakarta.resource.spi.security.PasswordCredential</credential-interface>
             </authentication-mechanism>
 
             <reauthentication-support>false</reauthentication-support>
diff --git a/appserver/jdbc/jdbc-ra/jdbc-ra-distribution/xml/ra-dm.xml b/appserver/jdbc/jdbc-ra/jdbc-ra-distribution/xml/ra-dm.xml
index c018a1f..8c62663 100644
--- a/appserver/jdbc/jdbc-ra/jdbc-ra-distribution/xml/ra-dm.xml
+++ b/appserver/jdbc/jdbc-ra/jdbc-ra-distribution/xml/ra-dm.xml
@@ -193,7 +193,7 @@
 
                 <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
 
-                <credential-interface>javax.resource.spi.security.PasswordCredential</credential-interface>
+                <credential-interface>jakarta.resource.spi.security.PasswordCredential</credential-interface>
             </authentication-mechanism>
 
             <reauthentication-support>false</reauthentication-support>
diff --git a/appserver/jdbc/jdbc-ra/jdbc-ra-distribution/xml/ra-ds.xml b/appserver/jdbc/jdbc-ra/jdbc-ra-distribution/xml/ra-ds.xml
index f87317c..7d30450 100644
--- a/appserver/jdbc/jdbc-ra/jdbc-ra-distribution/xml/ra-ds.xml
+++ b/appserver/jdbc/jdbc-ra/jdbc-ra-distribution/xml/ra-ds.xml
@@ -234,7 +234,7 @@
 
                 <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
 
-                <credential-interface>javax.resource.spi.security.PasswordCredential</credential-interface>
+                <credential-interface>jakarta.resource.spi.security.PasswordCredential</credential-interface>
             </authentication-mechanism>
 
             <reauthentication-support>false</reauthentication-support>
diff --git a/appserver/jdbc/jdbc-ra/jdbc-ra-distribution/xml/ra-xa.xml b/appserver/jdbc/jdbc-ra/jdbc-ra-distribution/xml/ra-xa.xml
index ded25e9..09841b7 100644
--- a/appserver/jdbc/jdbc-ra/jdbc-ra-distribution/xml/ra-xa.xml
+++ b/appserver/jdbc/jdbc-ra/jdbc-ra-distribution/xml/ra-xa.xml
@@ -233,7 +233,7 @@
 
                 <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
 
-                <credential-interface>javax.resource.spi.security.PasswordCredential</credential-interface>
+                <credential-interface>jakarta.resource.spi.security.PasswordCredential</credential-interface>
             </authentication-mechanism>
 
             <reauthentication-support>false</reauthentication-support>
diff --git a/appserver/jdbc/jdbc-ra/jdbc40/src/main/java/com/sun/gjc/spi/jdbc40/ConnectionHolder40.java b/appserver/jdbc/jdbc-ra/jdbc40/src/main/java/com/sun/gjc/spi/jdbc40/ConnectionHolder40.java
index 157751f..7920b45 100644
--- a/appserver/jdbc/jdbc-ra/jdbc40/src/main/java/com/sun/gjc/spi/jdbc40/ConnectionHolder40.java
+++ b/appserver/jdbc/jdbc-ra/jdbc40/src/main/java/com/sun/gjc/spi/jdbc40/ConnectionHolder40.java
@@ -360,7 +360,7 @@
      * 
      * @return true if the client info properties are supported, false otherwise
      *
-     * @throws javax.resource.ResourceException if the access to connection is failed.
+     * @throws jakarta.resource.ResourceException if the access to connection is failed.
      *
      * @throws java.sql.SQLException if the database server returns an error when retrieving 
      *                               a list of the client info properties.
diff --git a/appserver/jdbc/jdbc-runtime/osgi.bundle b/appserver/jdbc/jdbc-runtime/osgi.bundle
index 602b576..847e340 100644
--- a/appserver/jdbc/jdbc-runtime/osgi.bundle
+++ b/appserver/jdbc/jdbc-runtime/osgi.bundle
@@ -25,6 +25,6 @@
 # This module uses classes from this pkg using reflection, so
 # we need to add it to the import list explicitly, as bnd can't
 # discover such dependencies.
-#Import-Package: javax.resource.spi.endpoint, *
+#Import-Package: jakarta.resource.spi.endpoint, *
 # dependent flashlight package resolved at runtime
 DynamicImport-Package: org.glassfish.flashlight.provider
diff --git a/appserver/jdbc/jdbc-runtime/src/main/java/org/glassfish/jdbcruntime/service/JdbcAdminServiceImpl.java b/appserver/jdbc/jdbc-runtime/src/main/java/org/glassfish/jdbcruntime/service/JdbcAdminServiceImpl.java
index adf9c48..7d0d968 100644
--- a/appserver/jdbc/jdbc-runtime/src/main/java/org/glassfish/jdbcruntime/service/JdbcAdminServiceImpl.java
+++ b/appserver/jdbc/jdbc-runtime/src/main/java/org/glassfish/jdbcruntime/service/JdbcAdminServiceImpl.java
@@ -191,7 +191,7 @@
      * connection pool refers to. This is used for connection validation.
      * @param poolInfo
      * @return all validation table names.
-     * @throws javax.resource.ResourceException
+     * @throws jakarta.resource.ResourceException
      * @throws javax.naming.NamingException
      */
     public Set<String> getValidationTableNames(PoolInfo poolInfo)
@@ -261,7 +261,7 @@
      * @param con
      * @param catalog database name used.
      * @return 
-     * @throws javax.resource.ResourceException
+     * @throws jakarta.resource.ResourceException
      */
     public static Set<String> getValidationTableNames(java.sql.Connection con, String catalog) 
             throws ResourceException {
diff --git a/appserver/pom.xml b/appserver/pom.xml
index 793348b..3b6fbe4 100644
--- a/appserver/pom.xml
+++ b/appserver/pom.xml
@@ -382,7 +382,7 @@
                             <jarType>api</jarType>
                             <specVersion>${jakarta.resource-api.version}</specVersion>
 			    <specImplVersion>${jakarta.resource-api.version}</specImplVersion>
-                            <apiPackage>javax.resource</apiPackage>
+                            <apiPackage>jakarta.resource</apiPackage>
                         </spec>
                         <spec>
                             <artifact>
diff --git a/appserver/security/core-ee/src/test/resources/com/sun/enterprise/security/perms/server.policy b/appserver/security/core-ee/src/test/resources/com/sun/enterprise/security/perms/server.policy
index 981a6e4..8ee5c19 100644
--- a/appserver/security/core-ee/src/test/resources/com/sun/enterprise/security/perms/server.policy
+++ b/appserver/security/core-ee/src/test/resources/com/sun/enterprise/security/perms/server.policy
@@ -99,7 +99,7 @@
 // Following grant block is only required by Connectors. If Connectors
 // are not in use the recommendation is to remove this grant.
 grant {
-        permission javax.security.auth.PrivateCredentialPermission "javax.resource.spi.security.PasswordCredential * \"*\"","read";
+        permission javax.security.auth.PrivateCredentialPermission "jakarta.resource.spi.security.PasswordCredential * \"*\"","read";
 };
 
 // Following grant block is only required for Reflection. If Reflection
diff --git a/appserver/security/security-dol/src/main/java/com/sun/enterprise/security/deployment/annotation/handlers/AuthenticationMechanismHandler.java b/appserver/security/security-dol/src/main/java/com/sun/enterprise/security/deployment/annotation/handlers/AuthenticationMechanismHandler.java
index d50a3f4..adcf530 100644
--- a/appserver/security/security-dol/src/main/java/com/sun/enterprise/security/deployment/annotation/handlers/AuthenticationMechanismHandler.java
+++ b/appserver/security/security-dol/src/main/java/com/sun/enterprise/security/deployment/annotation/handlers/AuthenticationMechanismHandler.java
@@ -25,10 +25,10 @@
 import com.sun.enterprise.deployment.xml.ConnectorTagNames;
 import com.sun.enterprise.util.LocalStringManagerImpl;
 
-import javax.resource.spi.AuthenticationMechanism;
-import javax.resource.spi.Connector;
-import javax.resource.spi.security.GenericCredential;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.AuthenticationMechanism;
+import jakarta.resource.spi.Connector;
+import jakarta.resource.spi.security.GenericCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import java.lang.annotation.Annotation;
 import java.util.logging.Level;
 import java.util.logging.Logger;
diff --git a/appserver/security/security-dol/src/main/java/com/sun/enterprise/security/deployment/annotation/handlers/SecurityPermissionHandler.java b/appserver/security/security-dol/src/main/java/com/sun/enterprise/security/deployment/annotation/handlers/SecurityPermissionHandler.java
index 38c65f5..f6b40d8 100644
--- a/appserver/security/security-dol/src/main/java/com/sun/enterprise/security/deployment/annotation/handlers/SecurityPermissionHandler.java
+++ b/appserver/security/security-dol/src/main/java/com/sun/enterprise/security/deployment/annotation/handlers/SecurityPermissionHandler.java
@@ -21,8 +21,8 @@
 import com.sun.enterprise.deployment.annotation.handlers.AbstractHandler;
 import com.sun.enterprise.util.LocalStringManagerImpl;
 
-import javax.resource.spi.Connector;
-import javax.resource.spi.SecurityPermission;
+import jakarta.resource.spi.Connector;
+import jakarta.resource.spi.SecurityPermission;
 import java.lang.annotation.Annotation;
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/amx/src/org/glassfish/admin/amxtest/config/ConnectorConnectionPoolConfigTest.java b/appserver/tests/amx/src/org/glassfish/admin/amxtest/config/ConnectorConnectionPoolConfigTest.java
index 1cb123a..a3bd9b4 100644
--- a/appserver/tests/amx/src/org/glassfish/admin/amxtest/config/ConnectorConnectionPoolConfigTest.java
+++ b/appserver/tests/amx/src/org/glassfish/admin/amxtest/config/ConnectorConnectionPoolConfigTest.java
@@ -30,7 +30,7 @@
  */
 public final class ConnectorConnectionPoolConfigTest
         extends ConfigMgrTestBase {
-    private static final String CONNECTOR_DEF_NAME = "javax.resource.cci.ConnectionFactory";
+    private static final String CONNECTOR_DEF_NAME = "jakarta.resource.cci.ConnectionFactory";
     private static final String RESOURCE_ADAPTOR_NAME = "cciblackbox-tx";
     private static final Map<String, String> OPTIONS = MapUtil.newMap(
             ConnectorConnectionPoolConfigKeys.IGNORE_MISSING_REFERENCES_KEY, "true");
diff --git a/appserver/tests/amx/src/org/glassfish/admin/amxtest/config/SecurityMapConfigTest.java b/appserver/tests/amx/src/org/glassfish/admin/amxtest/config/SecurityMapConfigTest.java
index 6158773..112b495 100644
--- a/appserver/tests/amx/src/org/glassfish/admin/amxtest/config/SecurityMapConfigTest.java
+++ b/appserver/tests/amx/src/org/glassfish/admin/amxtest/config/SecurityMapConfigTest.java
@@ -101,7 +101,7 @@
         return smc;
     }
 
-    private static final String CONNECTOR_DEF_NAME = "javax.resource.cci.ConnectionFactory";
+    private static final String CONNECTOR_DEF_NAME = "jakarta.resource.cci.ConnectionFactory";
 
     public void
     testCreateRemove() {
diff --git a/appserver/tests/amx/src/org/glassfish/admin/amxtest/config/SecurityServiceConfigTest.java b/appserver/tests/amx/src/org/glassfish/admin/amxtest/config/SecurityServiceConfigTest.java
index 994b143..dd37a3c 100644
--- a/appserver/tests/amx/src/org/glassfish/admin/amxtest/config/SecurityServiceConfigTest.java
+++ b/appserver/tests/amx/src/org/glassfish/admin/amxtest/config/SecurityServiceConfigTest.java
@@ -103,7 +103,7 @@
         return smc;
     }
 
-    private static final String CONNECTOR_DEF_NAME = "javax.resource.cci.ConnectionFactory";
+    private static final String CONNECTOR_DEF_NAME = "jakarta.resource.cci.ConnectionFactory";
 
     public void
     testCreateRemove() {
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/DeliveryWork.java
index f4599fd..0c80aa6 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/DeliveryWork.java
@@ -18,8 +18,8 @@
 
 import java.lang.reflect.Method;
 
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.work.Work;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.work.Work;
 
 /**
  * 
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/MyWork.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/MyWork.java
index 7172677..6075ec4 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/MyWork.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/MyWork.java
@@ -18,9 +18,9 @@
 
 import java.lang.reflect.Method;
 
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 
 /**
  * 
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/SimpleActivationSpec.java
index 4f4840e..62859c8 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/SimpleActivationSpec.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
 
 /**
  * This class is supposed to implemented as a JavaBean so that the app server
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/SimpleResourceAdapterImpl.java
index 11bfe89..0f71b27 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -18,18 +18,18 @@
 
 import java.util.Timer;
 
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/TestWMWork.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/TestWMWork.java
index 9458496..6cf546e 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/TestWMWork.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/TestWMWork.java
@@ -16,10 +16,10 @@
 
 package connector;
 
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkException;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkException;
+import jakarta.resource.spi.work.WorkManager;
 
 /**
  * 
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/WorkDispatcher.java
index febd104..ada0a0c 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/embedded-resource-adapter-as-bean-archive/ra/src/connector/WorkDispatcher.java
@@ -18,15 +18,15 @@
 
 import java.lang.reflect.Method;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/DeliveryWork.java
index 43377e8..f4e2ba4 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/DeliveryWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/MyWork.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/MyWork.java
index 0513628..61588ec 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/MyWork.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/MyWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/SimpleActivationSpec.java
index fc14e69..fa9983f 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/SimpleActivationSpec.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
 
 /**
  * This class is supposed to implemented as a JavaBean
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/SimpleResourceAdapterImpl.java
index 4d4d6c4..577889d 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -20,20 +20,20 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Properties;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/TestWMWork.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/TestWMWork.java
index f132758..47fdede 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/TestWMWork.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/TestWMWork.java
@@ -18,13 +18,13 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.WorkException;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.WorkException;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/WorkDispatcher.java
index 5aa436c..9a059fe 100644
--- a/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/cdi/javaee-integration/standalone-resource-adapter-as-bean-archive/ra/src/connector/WorkDispatcher.java
@@ -18,15 +18,15 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 import javax.transaction.xa.Xid;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci-embedded/build.xml b/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci-embedded/build.xml
index 6a0deb0..e932893 100755
--- a/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci-embedded/build.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci-embedded/build.xml
@@ -55,7 +55,7 @@
     <target name="create-pool">
                 <antcall target="create-connector-connpool-common">
                 <param name="ra.name" value="connector-embedded-cciApp#cciblackbox-${tx.mode}"/>
-                <param name="connection.defname" value="javax.resource.cci.ConnectionFactory"/>
+                <param name="connection.defname" value="jakarta.resource.cci.ConnectionFactory"/>
                 <param name="connector.conpool.name" value="EMBEDDED-CCI-CONNPOOL"/>
                 </antcall>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci-embedded/descriptor/ejb-jar.xml b/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci-embedded/descriptor/ejb-jar.xml
index e1d2d99..9a3503c 100644
--- a/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci-embedded/descriptor/ejb-jar.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci-embedded/descriptor/ejb-jar.xml
@@ -45,7 +45,7 @@
       </security-identity>
       <resource-ref>
         <res-ref-name>eis/EMBEDDEDCCIEIS</res-ref-name>
-        <res-type>javax.resource.cci.ConnectionFactory</res-type>
+        <res-type>jakarta.resource.cci.ConnectionFactory</res-type>
         <res-auth>Application</res-auth>
         <res-sharing-scope>Shareable</res-sharing-scope>
       </resource-ref>
diff --git a/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci-embedded/descriptor/ra.xml b/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci-embedded/descriptor/ra.xml
index f9faeb2..8815f82 100644
--- a/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci-embedded/descriptor/ra.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci-embedded/descriptor/ra.xml
@@ -26,9 +26,9 @@
     <version>1.0</version>
     <resourceadapter>
         <managedconnectionfactory-class>com.sun.connector.cciblackbox.CciLocalTxManagedConnectionFactory</managedconnectionfactory-class>
-        <connectionfactory-interface>javax.resource.cci.ConnectionFactory</connectionfactory-interface>
+        <connectionfactory-interface>jakarta.resource.cci.ConnectionFactory</connectionfactory-interface>
         <connectionfactory-impl-class>com.sun.connector.cciblackbox.CciConnectionFactory</connectionfactory-impl-class>
-        <connection-interface>javax.resource.cci.Connection</connection-interface>
+        <connection-interface>jakarta.resource.cci.Connection</connection-interface>
         <connection-impl-class>com.sun.connector.cciblackbox.CciConnection</connection-impl-class>
         <transaction-support>LocalTransaction</transaction-support>
         <config-property>
@@ -38,7 +38,7 @@
         </config-property>
         <authentication-mechanism>
             <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-            <credential-interface>javax.resource.security.PasswordCredential</credential-interface>
+            <credential-interface>jakarta.resource.security.PasswordCredential</credential-interface>
         </authentication-mechanism>
         <reauthentication-support>false</reauthentication-support>
     </resourceadapter>
diff --git a/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci-embedded/ejb/CoffeeBean.java b/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci-embedded/ejb/CoffeeBean.java
index 817e3d7..b4ccb7c 100644
--- a/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci-embedded/ejb/CoffeeBean.java
+++ b/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci-embedded/ejb/CoffeeBean.java
@@ -19,8 +19,8 @@
 import java.math.BigDecimal;
 import java.util.*;
 import jakarta.ejb.*;
-import javax.resource.cci.*;
-import javax.resource.ResourceException;
+import jakarta.resource.cci.*;
+import jakarta.resource.ResourceException;
 import javax.naming.*;
 import com.sun.connector.cciblackbox.*;
 
@@ -41,7 +41,7 @@
             Context ic = new InitialContext();
             user = (String) ic.lookup("java:comp/env/user");
             password = (String) ic.lookup("java:comp/env/password");
-            cf = (javax.resource.cci.ConnectionFactory) ic.lookup("java:comp/env/eis/EMBEDDEDCCIEIS");
+            cf = (jakarta.resource.cci.ConnectionFactory) ic.lookup("java:comp/env/eis/EMBEDDEDCCIEIS");
         } catch (NamingException ex) {
             ex.printStackTrace();
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci/build.xml b/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci/build.xml
index 91fb729..b914b9f 100755
--- a/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci/build.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci/build.xml
@@ -140,7 +140,7 @@
     <antcall target="create-connector-connpool-common">
         <param name="ra.name" value="cciblackbox-${tx.mode}"/>
         <param name="connection.defname" 
-            value="javax.resource.cci.ConnectionFactory"/>
+            value="jakarta.resource.cci.ConnectionFactory"/>
         <param name="connector.conpool.name" value="CCI-CONNPOOL"/>
     </antcall>
 </target>
diff --git a/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci/descriptor/ejb-jar.xml b/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci/descriptor/ejb-jar.xml
index a56fe59..a19cbac 100644
--- a/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci/descriptor/ejb-jar.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci/descriptor/ejb-jar.xml
@@ -45,7 +45,7 @@
       </security-identity>
       <resource-ref>
         <res-ref-name>eis/CCIEIS</res-ref-name>
-        <res-type>javax.resource.cci.ConnectionFactory</res-type>
+        <res-type>jakarta.resource.cci.ConnectionFactory</res-type>
         <res-auth>Application</res-auth>
         <res-sharing-scope>Shareable</res-sharing-scope>
       </resource-ref>
diff --git a/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci/descriptor/ra.xml b/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci/descriptor/ra.xml
index f9faeb2..8815f82 100644
--- a/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci/descriptor/ra.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci/descriptor/ra.xml
@@ -26,9 +26,9 @@
     <version>1.0</version>
     <resourceadapter>
         <managedconnectionfactory-class>com.sun.connector.cciblackbox.CciLocalTxManagedConnectionFactory</managedconnectionfactory-class>
-        <connectionfactory-interface>javax.resource.cci.ConnectionFactory</connectionfactory-interface>
+        <connectionfactory-interface>jakarta.resource.cci.ConnectionFactory</connectionfactory-interface>
         <connectionfactory-impl-class>com.sun.connector.cciblackbox.CciConnectionFactory</connectionfactory-impl-class>
-        <connection-interface>javax.resource.cci.Connection</connection-interface>
+        <connection-interface>jakarta.resource.cci.Connection</connection-interface>
         <connection-impl-class>com.sun.connector.cciblackbox.CciConnection</connection-impl-class>
         <transaction-support>LocalTransaction</transaction-support>
         <config-property>
@@ -38,7 +38,7 @@
         </config-property>
         <authentication-mechanism>
             <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-            <credential-interface>javax.resource.security.PasswordCredential</credential-interface>
+            <credential-interface>jakarta.resource.security.PasswordCredential</credential-interface>
         </authentication-mechanism>
         <reauthentication-support>false</reauthentication-support>
     </resourceadapter>
diff --git a/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci/ejb/CoffeeBean.java b/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci/ejb/CoffeeBean.java
index 2e668cc..2883589 100644
--- a/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci/ejb/CoffeeBean.java
+++ b/appserver/tests/appserv-tests/devtests/connector/SunRaXml/cci/ejb/CoffeeBean.java
@@ -19,8 +19,8 @@
 import java.math.BigDecimal;
 import java.util.*;
 import jakarta.ejb.*;
-import javax.resource.cci.*;
-import javax.resource.ResourceException;
+import jakarta.resource.cci.*;
+import jakarta.resource.ResourceException;
 import javax.naming.*;
 import com.sun.connector.cciblackbox.*;
 
@@ -41,7 +41,7 @@
             Context ic = new InitialContext();
             user = (String) ic.lookup("java:comp/env/user");
             password = (String) ic.lookup("java:comp/env/password");
-            cf = (javax.resource.cci.ConnectionFactory) ic.lookup("java:comp/env/eis/CCIEIS");
+            cf = (jakarta.resource.cci.ConnectionFactory) ic.lookup("java:comp/env/eis/CCIEIS");
         } catch (NamingException ex) {
             ex.printStackTrace();
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml-module-scope/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml-module-scope/ra/src/connector/DeliveryWork.java
index 81f7a6b..1f59b98 100755
--- a/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml-module-scope/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml-module-scope/ra/src/connector/DeliveryWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 import connector.MyMessageListener;
 
 /**
diff --git a/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml-module-scope/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml-module-scope/ra/src/connector/SimpleActivationSpec.java
index 56e8e32..8182ef5 100755
--- a/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml-module-scope/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml-module-scope/ra/src/connector/SimpleActivationSpec.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
 
 /**
  * This class is supposed to implemented as a JavaBean
diff --git a/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml-module-scope/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml-module-scope/ra/src/connector/SimpleResourceAdapterImpl.java
index 83039f0..6e5353f 100755
--- a/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml-module-scope/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml-module-scope/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -20,20 +20,20 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Properties;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml-module-scope/ra/src/connector/TestWMWork.java b/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml-module-scope/ra/src/connector/TestWMWork.java
index 839ca0e..bb05534 100755
--- a/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml-module-scope/ra/src/connector/TestWMWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml-module-scope/ra/src/connector/TestWMWork.java
@@ -18,13 +18,13 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.WorkException;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.WorkException;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml-module-scope/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml-module-scope/ra/src/connector/WorkDispatcher.java
index c488fc1..aec89be 100755
--- a/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml-module-scope/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml-module-scope/ra/src/connector/WorkDispatcher.java
@@ -18,15 +18,15 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 import javax.transaction.xa.Xid;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml/ra/src/connector/DeliveryWork.java
index 63076d3..658233e 100644
--- a/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml/ra/src/connector/DeliveryWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml/ra/src/connector/SimpleActivationSpec.java
index 56e8e32..8182ef5 100644
--- a/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml/ra/src/connector/SimpleActivationSpec.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
 
 /**
  * This class is supposed to implemented as a JavaBean
diff --git a/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml/ra/src/connector/SimpleResourceAdapterImpl.java
index 83039f0..6e5353f 100644
--- a/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -20,20 +20,20 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Properties;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml/ra/src/connector/TestWMWork.java b/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml/ra/src/connector/TestWMWork.java
index 839ca0e..bb05534 100644
--- a/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml/ra/src/connector/TestWMWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml/ra/src/connector/TestWMWork.java
@@ -18,13 +18,13 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.WorkException;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.WorkException;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml/ra/src/connector/WorkDispatcher.java
index c488fc1..aec89be 100644
--- a/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/connector1.5-resourcesxml/ra/src/connector/WorkDispatcher.java
@@ -18,15 +18,15 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 import javax.transaction.xa.Xid;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/DeliveryWork.java
index 63076d3..658233e 100644
--- a/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/DeliveryWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/MyWork.java b/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/MyWork.java
index 226ca00..2ecec63 100644
--- a/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/MyWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/MyWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/SimpleActivationSpec.java
index 56e8e32..8182ef5 100644
--- a/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/SimpleActivationSpec.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
 
 /**
  * This class is supposed to implemented as a JavaBean
diff --git a/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/SimpleResourceAdapterImpl.java
index 83039f0..6e5353f 100644
--- a/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -20,20 +20,20 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Properties;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/TestWMWork.java b/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/TestWMWork.java
index 839ca0e..bb05534 100644
--- a/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/TestWMWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/TestWMWork.java
@@ -18,13 +18,13 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.WorkException;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.WorkException;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/WorkDispatcher.java
index 44b1d39..34a604f 100644
--- a/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/connector1.5/ra/src/connector/WorkDispatcher.java
@@ -18,15 +18,15 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 import javax.transaction.xa.Xid;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/DeliveryWork.java
index 63076d3..658233e 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/DeliveryWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/MyWork.java b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/MyWork.java
index 226ca00..2ecec63 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/MyWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/MyWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/SimpleActivationSpec.java
index 0f915aa..946d987 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/SimpleActivationSpec.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
 
 /**
  * This class is supposed to implemented as a JavaBean
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/SimpleResourceAdapterImpl.java
index ec3db5d..21e791d 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -20,20 +20,20 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Properties;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/TestWMWork.java b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/TestWMWork.java
index 78fb0c4..7e585a3 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/TestWMWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/TestWMWork.java
@@ -18,13 +18,13 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.WorkException;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.WorkException;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/WorkDispatcher.java
index 44b1d39..34a604f 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5-resourcesxml/ra/src/connector/WorkDispatcher.java
@@ -18,15 +18,15 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 import javax.transaction.xa.Xid;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/DeliveryWork.java
index 63076d3..658233e 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/DeliveryWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/MyWork.java b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/MyWork.java
index 226ca00..2ecec63 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/MyWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/MyWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/SimpleActivationSpec.java
index 0f915aa..946d987 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/SimpleActivationSpec.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
 
 /**
  * This class is supposed to implemented as a JavaBean
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/SimpleResourceAdapterImpl.java
index ec3db5d..21e791d 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -20,20 +20,20 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Properties;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/TestWMWork.java b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/TestWMWork.java
index 78fb0c4..7e585a3 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/TestWMWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/TestWMWork.java
@@ -18,13 +18,13 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.WorkException;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.WorkException;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/WorkDispatcher.java
index 44b1d39..34a604f 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedConnector1.5/ra/src/connector/WorkDispatcher.java
@@ -18,15 +18,15 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 import javax.transaction.xa.Xid;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
index 9efb07c..c2822e2 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
@@ -22,7 +22,7 @@
 import java.util.StringTokenizer;
 import java.util.Enumeration;
 import com.sun.jdbcra.util.MethodExecutor;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
index e6f751b..ac7e748 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
@@ -16,11 +16,11 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.ConnectionManager;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import java.sql.DriverManager;
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
@@ -37,14 +37,14 @@
  * @author	Evani Sai Surya Kiran
  */
 
-public abstract class ManagedConnectionFactory implements javax.resource.spi.ManagedConnectionFactory, 
+public abstract class ManagedConnectionFactory implements jakarta.resource.spi.ManagedConnectionFactory, 
     java.io.Serializable {
     
     protected DataSourceSpec spec = new DataSourceSpec();
     protected transient DataSourceObjectBuilder dsObjBuilder;
     
     protected java.io.PrintWriter logWriter = null;
-    protected javax.resource.spi.ResourceAdapter ra = null;
+    protected jakarta.resource.spi.ResourceAdapter ra = null;
     
     private static Logger _logger;
     static {
@@ -62,7 +62,7 @@
             logWriter.println("In createConnectionFactory()");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, null);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, null);
         
         return cf;
     }
@@ -74,12 +74,12 @@
      * @param	cxManager	<code>ConnectionManager</code> passed by the application server
      * @return	Generic JDBC Connector implementation of <code>javax.sql.DataSource</code>
      */
-    public Object createConnectionFactory(javax.resource.spi.ConnectionManager cxManager) {
+    public Object createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager) {
         if(logWriter != null) {
-            logWriter.println("In createConnectionFactory(javax.resource.spi.ConnectionManager cxManager)");
+            logWriter.println("In createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager)");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, cxManager);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, cxManager);
         return cf; 
     }
     
@@ -100,7 +100,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public abstract javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public abstract jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException;
     
     /**
@@ -130,7 +130,7 @@
      * @return	<code>ResourceAdapter</code> associated with this <code>ManagedConnectionFactory</code> instance
      * @see	<code>setResourceAdapter</code>
      */
-    public javax.resource.spi.ResourceAdapter getResourceAdapter() {
+    public jakarta.resource.spi.ResourceAdapter getResourceAdapter() {
         if(logWriter != null) {
             logWriter.println("In getResourceAdapter");
         }
@@ -164,7 +164,7 @@
      *					parameter or the <code>Set</code> of <code>ManagedConnection</code>
      *					objects passed by the application server
      */
-    public javax.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
+    public jakarta.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
         javax.security.auth.Subject subject, ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In matchManagedConnections");
@@ -459,7 +459,7 @@
      *			<code>ManagedConnectionFactory</code> instance
      * @see	<code>getResourceAdapter</code>
      */
-    public void setResourceAdapter(javax.resource.spi.ResourceAdapter ra) {
+    public void setResourceAdapter(jakarta.resource.spi.ResourceAdapter ra) {
         this.ra = ra;   
     }
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
index 0ebd31f..555be77 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
@@ -16,12 +16,12 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.NotSupportedException;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.NotSupportedException;
 import javax.transaction.xa.XAResource;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapterInternalException;
 
 /**
  * <code>ResourceAdapter</code> implementation for Generic JDBC Connector.
@@ -29,7 +29,7 @@
  * @version	1.0, 02/08/05
  * @author	Evani Sai Surya Kiran
  */
-public class ResourceAdapter implements javax.resource.spi.ResourceAdapter {
+public class ResourceAdapter implements jakarta.resource.spi.ResourceAdapter {
 
     public String raProp = null;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/ConnectionManager.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
index 688e0fc..b219cd2 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
@@ -16,10 +16,10 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 
 /**
  * ConnectionManager implementation for Generic JDBC Connector.
@@ -27,7 +27,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionManager implements javax.resource.spi.ConnectionManager{ 
+public class ConnectionManager implements jakarta.resource.spi.ConnectionManager{ 
 
     /**
      * Returns a <code>Connection </code> object to the <code>ConnectionFactory</code>
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
index 997c7b1..39c7876 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
@@ -22,7 +22,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionRequestInfo implements javax.resource.spi.ConnectionRequestInfo{ 
+public class ConnectionRequestInfo implements jakarta.resource.spi.ConnectionRequestInfo{ 
 
     private String user;
     private String password;
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
index 4e4ab3d..411b73f 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
@@ -16,13 +16,13 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.ConnectionManager;
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import com.sun.jdbcra.spi.ManagedConnectionFactory;
 import com.sun.jdbcra.common.DataSourceSpec;
 import java.util.logging.Logger;
@@ -62,7 +62,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In createManagedConnection");
@@ -78,7 +78,7 @@
                 dataSourceObj = (javax.sql.DataSource) dsObjBuilder.constructDataSourceObject();
             } catch(ClassCastException cce) {
 	        _logger.log(Level.SEVERE, "jdbc.exc_cce", cce);
-                throw new javax.resource.ResourceException(cce.getMessage());
+                throw new jakarta.resource.ResourceException(cce.getMessage());
             }
         }
         
@@ -98,7 +98,7 @@
 	    }
         } catch(java.sql.SQLException sqle) {
 	    _logger.log(Level.WARNING, "jdbc.exc_create_conn", sqle);
-            throw new javax.resource.spi.ResourceAllocationException("The connection could not be allocated: " + 
+            throw new jakarta.resource.spi.ResourceAllocationException("The connection could not be allocated: " + 
                 sqle.getMessage());
         }
         
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/DataSource.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/DataSource.java
index 8d0d0a1..2068430 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/DataSource.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/DataSource.java
@@ -20,9 +20,9 @@
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.sql.SQLFeatureNotSupportedException;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.ResourceException;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.ResourceException;
 import javax.naming.Reference;
 
 import java.util.logging.Logger;
@@ -35,7 +35,7 @@
  * @author	Binod P.G
  */
 public class DataSource implements javax.sql.DataSource, java.io.Serializable,
-		com.sun.appserv.jdbcra.DataSource, javax.resource.Referenceable{ 
+		com.sun.appserv.jdbcra.DataSource, jakarta.resource.Referenceable{ 
 				   
     private ManagedConnectionFactory mcf;
     private ConnectionManager cm;				   				   
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/LocalTransaction.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
index 24ae3c7..8ebe057 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
@@ -17,8 +17,8 @@
 package com.sun.jdbcra.spi;
 
 import com.sun.jdbcra.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.LocalTransactionException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.LocalTransactionException;
 
 /**
  * <code>LocalTransaction</code> implementation for Generic JDBC Connector.
@@ -26,7 +26,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class LocalTransaction implements javax.resource.spi.LocalTransaction {
+public class LocalTransaction implements jakarta.resource.spi.LocalTransaction {
     
     private ManagedConnection mc;
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/ManagedConnection.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
index 29e75a6..30f460a 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
@@ -16,8 +16,8 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.*;
-import javax.resource.*;
+import jakarta.resource.spi.*;
+import jakarta.resource.*;
 import javax.security.auth.Subject;
 import java.io.PrintWriter;
 import javax.transaction.xa.XAResource;
@@ -28,8 +28,8 @@
 import javax.sql.XAConnection;
 import java.sql.Connection;
 import java.sql.SQLException;
-import javax.resource.NotSupportedException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.spi.security.PasswordCredential;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.LocalTransaction;
 import com.sun.jdbcra.spi.ManagedConnectionMetaData;
@@ -44,7 +44,7 @@
  * @version	1.0, 02/07/22
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnection implements javax.resource.spi.ManagedConnection {
+public class ManagedConnection implements jakarta.resource.spi.ManagedConnection {
 
     public static final int ISNOTAPOOLEDCONNECTION = 0;
     public static final int ISPOOLEDCONNECTION = 1;
@@ -59,7 +59,7 @@
     private Hashtable connectionHandles;
     private PrintWriter logWriter;
     private PasswordCredential passwdCredential;
-    private javax.resource.spi.ManagedConnectionFactory mcf = null;
+    private jakarta.resource.spi.ManagedConnectionFactory mcf = null;
     private XAResource xar = null;
     public ConnectionHolder activeConnectionHandle;
     
@@ -100,7 +100,7 @@
      *					object passed
      */
     public ManagedConnection(PooledConnection pooledConn, java.sql.Connection sqlConn, 
-        PasswordCredential passwdCred, javax.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
+        PasswordCredential passwdCred, jakarta.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
         if(pooledConn == null && sqlConn == null) {
             throw new ResourceException("Connection object cannot be null");
         }
@@ -276,7 +276,7 @@
      * @throws	SecurityException	if there is a mismatch between the
      *        	                 	password credentials or reauthentication is requested
      */
-    public Object getConnection(Subject sub, javax.resource.spi.ConnectionRequestInfo cxReqInfo) 
+    public Object getConnection(Subject sub, jakarta.resource.spi.ConnectionRequestInfo cxReqInfo) 
         throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getConnection");
@@ -286,7 +286,7 @@
         PasswordCredential passwdCred = SecurityUtils.getPasswordCredential(this.mcf, sub, cxRequestInfo);
             
         if(SecurityUtils.isPasswordCredentialEqual(this.passwdCredential, passwdCred) == false) {
-            throw new javax.resource.spi.SecurityException("Re-authentication not supported");
+            throw new jakarta.resource.spi.SecurityException("Re-authentication not supported");
         }
         
         //GJCINT
@@ -324,7 +324,7 @@
      * @return	<code>LocalTransaction</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
+    public jakarta.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getLocalTransaction");
         }
@@ -356,7 +356,7 @@
      * @return	<code>ManagedConnectionMetaData</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
+    public jakarta.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In getMetaData");
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
index 78537a9..20f03aa 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
@@ -18,7 +18,7 @@
 
 import com.sun.jdbcra.spi.ManagedConnection;
 import java.sql.SQLException;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
@@ -28,7 +28,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnectionMetaData implements javax.resource.spi.ManagedConnectionMetaData {
+public class ManagedConnectionMetaData implements jakarta.resource.spi.ManagedConnectionMetaData {
 
     private java.sql.DatabaseMetaData dmd = null;
     private ManagedConnection mc;
@@ -111,7 +111,7 @@
      * @throws	<code>ResourceException</code>
      */
     public String getUserName() throws ResourceException {
-        javax.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
+        jakarta.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
         if(pc != null) {
             return pc.getUserName();
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/util/MethodExecutor.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/util/MethodExecutor.java
index cbf597b..ce321af 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/util/MethodExecutor.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/util/MethodExecutor.java
@@ -19,7 +19,7 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.InvocationTargetException;
 import java.util.Vector;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/util/SecurityUtils.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/util/SecurityUtils.java
index 6405c61..fc149bf 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/util/SecurityUtils.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb-resourcesxml-defaultconnpool/ra/src/com/sun/jdbcra/util/SecurityUtils.java
@@ -19,9 +19,9 @@
 import javax.security.auth.Subject;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import javax.resource.spi.security.PasswordCredential;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import java.util.Set;
 import java.util.Iterator;
@@ -56,7 +56,7 @@
      * @throws	<code>SecurityException</code>	if access to the <code>Subject</code> instance is denied
      */
     public static PasswordCredential getPasswordCredential(final ManagedConnectionFactory mcf,
-         final Subject subject, javax.resource.spi.ConnectionRequestInfo info) throws ResourceException {
+         final Subject subject, jakarta.resource.spi.ConnectionRequestInfo info) throws ResourceException {
 
 	if (info == null) {
             if (subject == null) {
@@ -77,7 +77,7 @@
                         }
                     });
                 if (pc == null) {
-                    throw new javax.resource.spi.SecurityException("No PasswordCredential found");
+                    throw new jakarta.resource.spi.SecurityException("No PasswordCredential found");
                 } else {
                     return pc;
                 }
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
index 9efb07c..c2822e2 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
@@ -22,7 +22,7 @@
 import java.util.StringTokenizer;
 import java.util.Enumeration;
 import com.sun.jdbcra.util.MethodExecutor;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
index e6f751b..ac7e748 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
@@ -16,11 +16,11 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.ConnectionManager;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import java.sql.DriverManager;
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
@@ -37,14 +37,14 @@
  * @author	Evani Sai Surya Kiran
  */
 
-public abstract class ManagedConnectionFactory implements javax.resource.spi.ManagedConnectionFactory, 
+public abstract class ManagedConnectionFactory implements jakarta.resource.spi.ManagedConnectionFactory, 
     java.io.Serializable {
     
     protected DataSourceSpec spec = new DataSourceSpec();
     protected transient DataSourceObjectBuilder dsObjBuilder;
     
     protected java.io.PrintWriter logWriter = null;
-    protected javax.resource.spi.ResourceAdapter ra = null;
+    protected jakarta.resource.spi.ResourceAdapter ra = null;
     
     private static Logger _logger;
     static {
@@ -62,7 +62,7 @@
             logWriter.println("In createConnectionFactory()");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, null);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, null);
         
         return cf;
     }
@@ -74,12 +74,12 @@
      * @param	cxManager	<code>ConnectionManager</code> passed by the application server
      * @return	Generic JDBC Connector implementation of <code>javax.sql.DataSource</code>
      */
-    public Object createConnectionFactory(javax.resource.spi.ConnectionManager cxManager) {
+    public Object createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager) {
         if(logWriter != null) {
-            logWriter.println("In createConnectionFactory(javax.resource.spi.ConnectionManager cxManager)");
+            logWriter.println("In createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager)");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, cxManager);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, cxManager);
         return cf; 
     }
     
@@ -100,7 +100,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public abstract javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public abstract jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException;
     
     /**
@@ -130,7 +130,7 @@
      * @return	<code>ResourceAdapter</code> associated with this <code>ManagedConnectionFactory</code> instance
      * @see	<code>setResourceAdapter</code>
      */
-    public javax.resource.spi.ResourceAdapter getResourceAdapter() {
+    public jakarta.resource.spi.ResourceAdapter getResourceAdapter() {
         if(logWriter != null) {
             logWriter.println("In getResourceAdapter");
         }
@@ -164,7 +164,7 @@
      *					parameter or the <code>Set</code> of <code>ManagedConnection</code>
      *					objects passed by the application server
      */
-    public javax.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
+    public jakarta.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
         javax.security.auth.Subject subject, ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In matchManagedConnections");
@@ -459,7 +459,7 @@
      *			<code>ManagedConnectionFactory</code> instance
      * @see	<code>getResourceAdapter</code>
      */
-    public void setResourceAdapter(javax.resource.spi.ResourceAdapter ra) {
+    public void setResourceAdapter(jakarta.resource.spi.ResourceAdapter ra) {
         this.ra = ra;   
     }
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
index 0ebd31f..555be77 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
@@ -16,12 +16,12 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.NotSupportedException;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.NotSupportedException;
 import javax.transaction.xa.XAResource;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapterInternalException;
 
 /**
  * <code>ResourceAdapter</code> implementation for Generic JDBC Connector.
@@ -29,7 +29,7 @@
  * @version	1.0, 02/08/05
  * @author	Evani Sai Surya Kiran
  */
-public class ResourceAdapter implements javax.resource.spi.ResourceAdapter {
+public class ResourceAdapter implements jakarta.resource.spi.ResourceAdapter {
 
     public String raProp = null;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionManager.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
index 688e0fc..b219cd2 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
@@ -16,10 +16,10 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 
 /**
  * ConnectionManager implementation for Generic JDBC Connector.
@@ -27,7 +27,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionManager implements javax.resource.spi.ConnectionManager{ 
+public class ConnectionManager implements jakarta.resource.spi.ConnectionManager{ 
 
     /**
      * Returns a <code>Connection </code> object to the <code>ConnectionFactory</code>
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
index 997c7b1..39c7876 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
@@ -22,7 +22,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionRequestInfo implements javax.resource.spi.ConnectionRequestInfo{ 
+public class ConnectionRequestInfo implements jakarta.resource.spi.ConnectionRequestInfo{ 
 
     private String user;
     private String password;
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
index 4e4ab3d..411b73f 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
@@ -16,13 +16,13 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.ConnectionManager;
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import com.sun.jdbcra.spi.ManagedConnectionFactory;
 import com.sun.jdbcra.common.DataSourceSpec;
 import java.util.logging.Logger;
@@ -62,7 +62,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In createManagedConnection");
@@ -78,7 +78,7 @@
                 dataSourceObj = (javax.sql.DataSource) dsObjBuilder.constructDataSourceObject();
             } catch(ClassCastException cce) {
 	        _logger.log(Level.SEVERE, "jdbc.exc_cce", cce);
-                throw new javax.resource.ResourceException(cce.getMessage());
+                throw new jakarta.resource.ResourceException(cce.getMessage());
             }
         }
         
@@ -98,7 +98,7 @@
 	    }
         } catch(java.sql.SQLException sqle) {
 	    _logger.log(Level.WARNING, "jdbc.exc_create_conn", sqle);
-            throw new javax.resource.spi.ResourceAllocationException("The connection could not be allocated: " + 
+            throw new jakarta.resource.spi.ResourceAllocationException("The connection could not be allocated: " + 
                 sqle.getMessage());
         }
         
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/DataSource.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/DataSource.java
index 0697658..219a365 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/DataSource.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/DataSource.java
@@ -19,9 +19,9 @@
 import java.io.PrintWriter;
 import java.sql.Connection;
 import java.sql.SQLException;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.ResourceException;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.ResourceException;
 import javax.naming.Reference;
 
 import java.sql.SQLFeatureNotSupportedException;
@@ -35,7 +35,7 @@
  * @author	Binod P.G
  */
 public class DataSource implements javax.sql.DataSource, java.io.Serializable,
-		com.sun.appserv.jdbcra.DataSource, javax.resource.Referenceable{ 
+		com.sun.appserv.jdbcra.DataSource, jakarta.resource.Referenceable{ 
 				   
     private ManagedConnectionFactory mcf;
     private ConnectionManager cm;				   				   
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/LocalTransaction.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
index 24ae3c7..8ebe057 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
@@ -17,8 +17,8 @@
 package com.sun.jdbcra.spi;
 
 import com.sun.jdbcra.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.LocalTransactionException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.LocalTransactionException;
 
 /**
  * <code>LocalTransaction</code> implementation for Generic JDBC Connector.
@@ -26,7 +26,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class LocalTransaction implements javax.resource.spi.LocalTransaction {
+public class LocalTransaction implements jakarta.resource.spi.LocalTransaction {
     
     private ManagedConnection mc;
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnection.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
index 29e75a6..30f460a 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
@@ -16,8 +16,8 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.*;
-import javax.resource.*;
+import jakarta.resource.spi.*;
+import jakarta.resource.*;
 import javax.security.auth.Subject;
 import java.io.PrintWriter;
 import javax.transaction.xa.XAResource;
@@ -28,8 +28,8 @@
 import javax.sql.XAConnection;
 import java.sql.Connection;
 import java.sql.SQLException;
-import javax.resource.NotSupportedException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.spi.security.PasswordCredential;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.LocalTransaction;
 import com.sun.jdbcra.spi.ManagedConnectionMetaData;
@@ -44,7 +44,7 @@
  * @version	1.0, 02/07/22
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnection implements javax.resource.spi.ManagedConnection {
+public class ManagedConnection implements jakarta.resource.spi.ManagedConnection {
 
     public static final int ISNOTAPOOLEDCONNECTION = 0;
     public static final int ISPOOLEDCONNECTION = 1;
@@ -59,7 +59,7 @@
     private Hashtable connectionHandles;
     private PrintWriter logWriter;
     private PasswordCredential passwdCredential;
-    private javax.resource.spi.ManagedConnectionFactory mcf = null;
+    private jakarta.resource.spi.ManagedConnectionFactory mcf = null;
     private XAResource xar = null;
     public ConnectionHolder activeConnectionHandle;
     
@@ -100,7 +100,7 @@
      *					object passed
      */
     public ManagedConnection(PooledConnection pooledConn, java.sql.Connection sqlConn, 
-        PasswordCredential passwdCred, javax.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
+        PasswordCredential passwdCred, jakarta.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
         if(pooledConn == null && sqlConn == null) {
             throw new ResourceException("Connection object cannot be null");
         }
@@ -276,7 +276,7 @@
      * @throws	SecurityException	if there is a mismatch between the
      *        	                 	password credentials or reauthentication is requested
      */
-    public Object getConnection(Subject sub, javax.resource.spi.ConnectionRequestInfo cxReqInfo) 
+    public Object getConnection(Subject sub, jakarta.resource.spi.ConnectionRequestInfo cxReqInfo) 
         throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getConnection");
@@ -286,7 +286,7 @@
         PasswordCredential passwdCred = SecurityUtils.getPasswordCredential(this.mcf, sub, cxRequestInfo);
             
         if(SecurityUtils.isPasswordCredentialEqual(this.passwdCredential, passwdCred) == false) {
-            throw new javax.resource.spi.SecurityException("Re-authentication not supported");
+            throw new jakarta.resource.spi.SecurityException("Re-authentication not supported");
         }
         
         //GJCINT
@@ -324,7 +324,7 @@
      * @return	<code>LocalTransaction</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
+    public jakarta.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getLocalTransaction");
         }
@@ -356,7 +356,7 @@
      * @return	<code>ManagedConnectionMetaData</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
+    public jakarta.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In getMetaData");
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
index 78537a9..20f03aa 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
@@ -18,7 +18,7 @@
 
 import com.sun.jdbcra.spi.ManagedConnection;
 import java.sql.SQLException;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
@@ -28,7 +28,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnectionMetaData implements javax.resource.spi.ManagedConnectionMetaData {
+public class ManagedConnectionMetaData implements jakarta.resource.spi.ManagedConnectionMetaData {
 
     private java.sql.DatabaseMetaData dmd = null;
     private ManagedConnection mc;
@@ -111,7 +111,7 @@
      * @throws	<code>ResourceException</code>
      */
     public String getUserName() throws ResourceException {
-        javax.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
+        jakarta.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
         if(pc != null) {
             return pc.getUserName();
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/util/MethodExecutor.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/util/MethodExecutor.java
index cbf597b..ce321af 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/util/MethodExecutor.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/util/MethodExecutor.java
@@ -19,7 +19,7 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.InvocationTargetException;
 import java.util.Vector;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/util/SecurityUtils.java b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/util/SecurityUtils.java
index 6405c61..fc149bf 100644
--- a/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/util/SecurityUtils.java
+++ b/appserver/tests/appserv-tests/devtests/connector/embeddedweb/ra/src/com/sun/jdbcra/util/SecurityUtils.java
@@ -19,9 +19,9 @@
 import javax.security.auth.Subject;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import javax.resource.spi.security.PasswordCredential;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import java.util.Set;
 import java.util.Iterator;
@@ -56,7 +56,7 @@
      * @throws	<code>SecurityException</code>	if access to the <code>Subject</code> instance is denied
      */
     public static PasswordCredential getPasswordCredential(final ManagedConnectionFactory mcf,
-         final Subject subject, javax.resource.spi.ConnectionRequestInfo info) throws ResourceException {
+         final Subject subject, jakarta.resource.spi.ConnectionRequestInfo info) throws ResourceException {
 
 	if (info == null) {
             if (subject == null) {
@@ -77,7 +77,7 @@
                         }
                     });
                 if (pc == null) {
-                    throw new javax.resource.spi.SecurityException("No PasswordCredential found");
+                    throw new jakarta.resource.spi.SecurityException("No PasswordCredential found");
                 } else {
                     return pc;
                 }
diff --git a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
index 9efb07c..c2822e2 100644
--- a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
+++ b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
@@ -22,7 +22,7 @@
 import java.util.StringTokenizer;
 import java.util.Enumeration;
 import com.sun.jdbcra.util.MethodExecutor;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
index e6f751b..ac7e748 100644
--- a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
@@ -16,11 +16,11 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.ConnectionManager;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import java.sql.DriverManager;
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
@@ -37,14 +37,14 @@
  * @author	Evani Sai Surya Kiran
  */
 
-public abstract class ManagedConnectionFactory implements javax.resource.spi.ManagedConnectionFactory, 
+public abstract class ManagedConnectionFactory implements jakarta.resource.spi.ManagedConnectionFactory, 
     java.io.Serializable {
     
     protected DataSourceSpec spec = new DataSourceSpec();
     protected transient DataSourceObjectBuilder dsObjBuilder;
     
     protected java.io.PrintWriter logWriter = null;
-    protected javax.resource.spi.ResourceAdapter ra = null;
+    protected jakarta.resource.spi.ResourceAdapter ra = null;
     
     private static Logger _logger;
     static {
@@ -62,7 +62,7 @@
             logWriter.println("In createConnectionFactory()");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, null);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, null);
         
         return cf;
     }
@@ -74,12 +74,12 @@
      * @param	cxManager	<code>ConnectionManager</code> passed by the application server
      * @return	Generic JDBC Connector implementation of <code>javax.sql.DataSource</code>
      */
-    public Object createConnectionFactory(javax.resource.spi.ConnectionManager cxManager) {
+    public Object createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager) {
         if(logWriter != null) {
-            logWriter.println("In createConnectionFactory(javax.resource.spi.ConnectionManager cxManager)");
+            logWriter.println("In createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager)");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, cxManager);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, cxManager);
         return cf; 
     }
     
@@ -100,7 +100,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public abstract javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public abstract jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException;
     
     /**
@@ -130,7 +130,7 @@
      * @return	<code>ResourceAdapter</code> associated with this <code>ManagedConnectionFactory</code> instance
      * @see	<code>setResourceAdapter</code>
      */
-    public javax.resource.spi.ResourceAdapter getResourceAdapter() {
+    public jakarta.resource.spi.ResourceAdapter getResourceAdapter() {
         if(logWriter != null) {
             logWriter.println("In getResourceAdapter");
         }
@@ -164,7 +164,7 @@
      *					parameter or the <code>Set</code> of <code>ManagedConnection</code>
      *					objects passed by the application server
      */
-    public javax.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
+    public jakarta.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
         javax.security.auth.Subject subject, ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In matchManagedConnections");
@@ -459,7 +459,7 @@
      *			<code>ManagedConnectionFactory</code> instance
      * @see	<code>getResourceAdapter</code>
      */
-    public void setResourceAdapter(javax.resource.spi.ResourceAdapter ra) {
+    public void setResourceAdapter(jakarta.resource.spi.ResourceAdapter ra) {
         this.ra = ra;   
     }
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
index 0ebd31f..555be77 100644
--- a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
@@ -16,12 +16,12 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.NotSupportedException;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.NotSupportedException;
 import javax.transaction.xa.XAResource;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapterInternalException;
 
 /**
  * <code>ResourceAdapter</code> implementation for Generic JDBC Connector.
@@ -29,7 +29,7 @@
  * @version	1.0, 02/08/05
  * @author	Evani Sai Surya Kiran
  */
-public class ResourceAdapter implements javax.resource.spi.ResourceAdapter {
+public class ResourceAdapter implements jakarta.resource.spi.ResourceAdapter {
 
     public String raProp = null;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ConnectionManager.java b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
index 688e0fc..b219cd2 100644
--- a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
+++ b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
@@ -16,10 +16,10 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 
 /**
  * ConnectionManager implementation for Generic JDBC Connector.
@@ -27,7 +27,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionManager implements javax.resource.spi.ConnectionManager{ 
+public class ConnectionManager implements jakarta.resource.spi.ConnectionManager{ 
 
     /**
      * Returns a <code>Connection </code> object to the <code>ConnectionFactory</code>
diff --git a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
index 997c7b1..39c7876 100644
--- a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
+++ b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
@@ -22,7 +22,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionRequestInfo implements javax.resource.spi.ConnectionRequestInfo{ 
+public class ConnectionRequestInfo implements jakarta.resource.spi.ConnectionRequestInfo{ 
 
     private String user;
     private String password;
diff --git a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
index 7c36182..4bf9fed 100644
--- a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
@@ -16,13 +16,13 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.ConnectionManager;
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import com.sun.jdbcra.spi.ManagedConnectionFactory;
 import com.sun.jdbcra.common.DataSourceSpec;
 import java.util.logging.Logger;
@@ -63,7 +63,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In createManagedConnection");
@@ -79,7 +79,7 @@
                 dataSourceObj = (javax.sql.DataSource) dsObjBuilder.constructDataSourceObject();
             } catch(ClassCastException cce) {
 	        _logger.log(Level.SEVERE, "jdbc.exc_cce", cce);
-                throw new javax.resource.ResourceException(cce.getMessage());
+                throw new jakarta.resource.ResourceException(cce.getMessage());
             }
         }
         
@@ -99,7 +99,7 @@
 	    }
         } catch(java.sql.SQLException sqle) {
 	    _logger.log(Level.WARNING, "jdbc.exc_create_conn", sqle);
-            throw new javax.resource.spi.ResourceAllocationException("The connection could not be allocated: " + 
+            throw new jakarta.resource.spi.ResourceAllocationException("The connection could not be allocated: " + 
                 sqle.getMessage());
         }
         
diff --git a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/DataSource.java b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/DataSource.java
index 0697658..219a365 100644
--- a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/DataSource.java
+++ b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/DataSource.java
@@ -19,9 +19,9 @@
 import java.io.PrintWriter;
 import java.sql.Connection;
 import java.sql.SQLException;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.ResourceException;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.ResourceException;
 import javax.naming.Reference;
 
 import java.sql.SQLFeatureNotSupportedException;
@@ -35,7 +35,7 @@
  * @author	Binod P.G
  */
 public class DataSource implements javax.sql.DataSource, java.io.Serializable,
-		com.sun.appserv.jdbcra.DataSource, javax.resource.Referenceable{ 
+		com.sun.appserv.jdbcra.DataSource, jakarta.resource.Referenceable{ 
 				   
     private ManagedConnectionFactory mcf;
     private ConnectionManager cm;				   				   
diff --git a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/LocalTransaction.java b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
index 24ae3c7..8ebe057 100644
--- a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
+++ b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
@@ -17,8 +17,8 @@
 package com.sun.jdbcra.spi;
 
 import com.sun.jdbcra.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.LocalTransactionException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.LocalTransactionException;
 
 /**
  * <code>LocalTransaction</code> implementation for Generic JDBC Connector.
@@ -26,7 +26,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class LocalTransaction implements javax.resource.spi.LocalTransaction {
+public class LocalTransaction implements jakarta.resource.spi.LocalTransaction {
     
     private ManagedConnection mc;
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ManagedConnection.java b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
index 29e75a6..30f460a 100644
--- a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
@@ -16,8 +16,8 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.*;
-import javax.resource.*;
+import jakarta.resource.spi.*;
+import jakarta.resource.*;
 import javax.security.auth.Subject;
 import java.io.PrintWriter;
 import javax.transaction.xa.XAResource;
@@ -28,8 +28,8 @@
 import javax.sql.XAConnection;
 import java.sql.Connection;
 import java.sql.SQLException;
-import javax.resource.NotSupportedException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.spi.security.PasswordCredential;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.LocalTransaction;
 import com.sun.jdbcra.spi.ManagedConnectionMetaData;
@@ -44,7 +44,7 @@
  * @version	1.0, 02/07/22
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnection implements javax.resource.spi.ManagedConnection {
+public class ManagedConnection implements jakarta.resource.spi.ManagedConnection {
 
     public static final int ISNOTAPOOLEDCONNECTION = 0;
     public static final int ISPOOLEDCONNECTION = 1;
@@ -59,7 +59,7 @@
     private Hashtable connectionHandles;
     private PrintWriter logWriter;
     private PasswordCredential passwdCredential;
-    private javax.resource.spi.ManagedConnectionFactory mcf = null;
+    private jakarta.resource.spi.ManagedConnectionFactory mcf = null;
     private XAResource xar = null;
     public ConnectionHolder activeConnectionHandle;
     
@@ -100,7 +100,7 @@
      *					object passed
      */
     public ManagedConnection(PooledConnection pooledConn, java.sql.Connection sqlConn, 
-        PasswordCredential passwdCred, javax.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
+        PasswordCredential passwdCred, jakarta.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
         if(pooledConn == null && sqlConn == null) {
             throw new ResourceException("Connection object cannot be null");
         }
@@ -276,7 +276,7 @@
      * @throws	SecurityException	if there is a mismatch between the
      *        	                 	password credentials or reauthentication is requested
      */
-    public Object getConnection(Subject sub, javax.resource.spi.ConnectionRequestInfo cxReqInfo) 
+    public Object getConnection(Subject sub, jakarta.resource.spi.ConnectionRequestInfo cxReqInfo) 
         throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getConnection");
@@ -286,7 +286,7 @@
         PasswordCredential passwdCred = SecurityUtils.getPasswordCredential(this.mcf, sub, cxRequestInfo);
             
         if(SecurityUtils.isPasswordCredentialEqual(this.passwdCredential, passwdCred) == false) {
-            throw new javax.resource.spi.SecurityException("Re-authentication not supported");
+            throw new jakarta.resource.spi.SecurityException("Re-authentication not supported");
         }
         
         //GJCINT
@@ -324,7 +324,7 @@
      * @return	<code>LocalTransaction</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
+    public jakarta.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getLocalTransaction");
         }
@@ -356,7 +356,7 @@
      * @return	<code>ManagedConnectionMetaData</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
+    public jakarta.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In getMetaData");
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
index 78537a9..20f03aa 100644
--- a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
+++ b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
@@ -18,7 +18,7 @@
 
 import com.sun.jdbcra.spi.ManagedConnection;
 import java.sql.SQLException;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
@@ -28,7 +28,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnectionMetaData implements javax.resource.spi.ManagedConnectionMetaData {
+public class ManagedConnectionMetaData implements jakarta.resource.spi.ManagedConnectionMetaData {
 
     private java.sql.DatabaseMetaData dmd = null;
     private ManagedConnection mc;
@@ -111,7 +111,7 @@
      * @throws	<code>ResourceException</code>
      */
     public String getUserName() throws ResourceException {
-        javax.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
+        jakarta.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
         if(pc != null) {
             return pc.getUserName();
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/util/MethodExecutor.java b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/util/MethodExecutor.java
index cbf597b..ce321af 100644
--- a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/util/MethodExecutor.java
+++ b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/util/MethodExecutor.java
@@ -19,7 +19,7 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.InvocationTargetException;
 import java.util.Vector;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/util/SecurityUtils.java b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/util/SecurityUtils.java
index 6405c61..fc149bf 100644
--- a/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/util/SecurityUtils.java
+++ b/appserver/tests/appserv-tests/devtests/connector/nonstringmcfproperties/ra/src/com/sun/jdbcra/util/SecurityUtils.java
@@ -19,9 +19,9 @@
 import javax.security.auth.Subject;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import javax.resource.spi.security.PasswordCredential;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import java.util.Set;
 import java.util.Iterator;
@@ -56,7 +56,7 @@
      * @throws	<code>SecurityException</code>	if access to the <code>Subject</code> instance is denied
      */
     public static PasswordCredential getPasswordCredential(final ManagedConnectionFactory mcf,
-         final Subject subject, javax.resource.spi.ConnectionRequestInfo info) throws ResourceException {
+         final Subject subject, jakarta.resource.spi.ConnectionRequestInfo info) throws ResourceException {
 
 	if (info == null) {
             if (subject == null) {
@@ -77,7 +77,7 @@
                         }
                     });
                 if (pc == null) {
-                    throw new javax.resource.spi.SecurityException("No PasswordCredential found");
+                    throw new jakarta.resource.spi.SecurityException("No PasswordCredential found");
                 } else {
                     return pc;
                 }
diff --git a/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/DeliveryWork.java
index 63076d3..658233e 100644
--- a/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/DeliveryWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/MyWork.java b/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/MyWork.java
index 226ca00..2ecec63 100644
--- a/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/MyWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/MyWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/SimpleActivationSpec.java
index 0f915aa..946d987 100644
--- a/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/SimpleActivationSpec.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
 
 /**
  * This class is supposed to implemented as a JavaBean
diff --git a/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/SimpleResourceAdapterImpl.java
index ab62d3c..4cd599c 100644
--- a/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -20,20 +20,20 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Properties;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/TestWMWork.java b/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/TestWMWork.java
index 78fb0c4..7e585a3 100644
--- a/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/TestWMWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/TestWMWork.java
@@ -18,13 +18,13 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.WorkException;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.WorkException;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/WorkDispatcher.java
index 44b1d39..34a604f 100644
--- a/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/nonstringraproperties/ra/src/connector/WorkDispatcher.java
@@ -18,15 +18,15 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 import javax.transaction.xa.Xid;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/threadpool/ra/src/connector/Controls.java b/appserver/tests/appserv-tests/devtests/connector/threadpool/ra/src/connector/Controls.java
index 58b0bed..2ae3c32 100644
--- a/appserver/tests/appserv-tests/devtests/connector/threadpool/ra/src/connector/Controls.java
+++ b/appserver/tests/appserv-tests/devtests/connector/threadpool/ra/src/connector/Controls.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.*;
-import javax.resource.spi.work.*;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.work.*;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/threadpool/ra/src/connector/ThreadPoolTestRA.java b/appserver/tests/appserv-tests/devtests/connector/threadpool/ra/src/connector/ThreadPoolTestRA.java
index 2abbf2c..6bf7f2a 100644
--- a/appserver/tests/appserv-tests/devtests/connector/threadpool/ra/src/connector/ThreadPoolTestRA.java
+++ b/appserver/tests/appserv-tests/devtests/connector/threadpool/ra/src/connector/ThreadPoolTestRA.java
@@ -20,20 +20,20 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Properties;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
index 9efb07c..c2822e2 100755
--- a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
+++ b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
@@ -22,7 +22,7 @@
 import java.util.StringTokenizer;
 import java.util.Enumeration;
 import com.sun.jdbcra.util.MethodExecutor;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
index e6f751b..ac7e748 100755
--- a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
@@ -16,11 +16,11 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.ConnectionManager;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import java.sql.DriverManager;
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
@@ -37,14 +37,14 @@
  * @author	Evani Sai Surya Kiran
  */
 
-public abstract class ManagedConnectionFactory implements javax.resource.spi.ManagedConnectionFactory, 
+public abstract class ManagedConnectionFactory implements jakarta.resource.spi.ManagedConnectionFactory, 
     java.io.Serializable {
     
     protected DataSourceSpec spec = new DataSourceSpec();
     protected transient DataSourceObjectBuilder dsObjBuilder;
     
     protected java.io.PrintWriter logWriter = null;
-    protected javax.resource.spi.ResourceAdapter ra = null;
+    protected jakarta.resource.spi.ResourceAdapter ra = null;
     
     private static Logger _logger;
     static {
@@ -62,7 +62,7 @@
             logWriter.println("In createConnectionFactory()");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, null);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, null);
         
         return cf;
     }
@@ -74,12 +74,12 @@
      * @param	cxManager	<code>ConnectionManager</code> passed by the application server
      * @return	Generic JDBC Connector implementation of <code>javax.sql.DataSource</code>
      */
-    public Object createConnectionFactory(javax.resource.spi.ConnectionManager cxManager) {
+    public Object createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager) {
         if(logWriter != null) {
-            logWriter.println("In createConnectionFactory(javax.resource.spi.ConnectionManager cxManager)");
+            logWriter.println("In createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager)");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, cxManager);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, cxManager);
         return cf; 
     }
     
@@ -100,7 +100,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public abstract javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public abstract jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException;
     
     /**
@@ -130,7 +130,7 @@
      * @return	<code>ResourceAdapter</code> associated with this <code>ManagedConnectionFactory</code> instance
      * @see	<code>setResourceAdapter</code>
      */
-    public javax.resource.spi.ResourceAdapter getResourceAdapter() {
+    public jakarta.resource.spi.ResourceAdapter getResourceAdapter() {
         if(logWriter != null) {
             logWriter.println("In getResourceAdapter");
         }
@@ -164,7 +164,7 @@
      *					parameter or the <code>Set</code> of <code>ManagedConnection</code>
      *					objects passed by the application server
      */
-    public javax.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
+    public jakarta.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
         javax.security.auth.Subject subject, ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In matchManagedConnections");
@@ -459,7 +459,7 @@
      *			<code>ManagedConnectionFactory</code> instance
      * @see	<code>getResourceAdapter</code>
      */
-    public void setResourceAdapter(javax.resource.spi.ResourceAdapter ra) {
+    public void setResourceAdapter(jakarta.resource.spi.ResourceAdapter ra) {
         this.ra = ra;   
     }
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
index 0ebd31f..555be77 100755
--- a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
@@ -16,12 +16,12 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.NotSupportedException;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.NotSupportedException;
 import javax.transaction.xa.XAResource;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapterInternalException;
 
 /**
  * <code>ResourceAdapter</code> implementation for Generic JDBC Connector.
@@ -29,7 +29,7 @@
  * @version	1.0, 02/08/05
  * @author	Evani Sai Surya Kiran
  */
-public class ResourceAdapter implements javax.resource.spi.ResourceAdapter {
+public class ResourceAdapter implements jakarta.resource.spi.ResourceAdapter {
 
     public String raProp = null;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/ConnectionManager.java b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
index 688e0fc..b219cd2 100755
--- a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
+++ b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
@@ -16,10 +16,10 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 
 /**
  * ConnectionManager implementation for Generic JDBC Connector.
@@ -27,7 +27,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionManager implements javax.resource.spi.ConnectionManager{ 
+public class ConnectionManager implements jakarta.resource.spi.ConnectionManager{ 
 
     /**
      * Returns a <code>Connection </code> object to the <code>ConnectionFactory</code>
diff --git a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
index 997c7b1..39c7876 100755
--- a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
+++ b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
@@ -22,7 +22,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionRequestInfo implements javax.resource.spi.ConnectionRequestInfo{ 
+public class ConnectionRequestInfo implements jakarta.resource.spi.ConnectionRequestInfo{ 
 
     private String user;
     private String password;
diff --git a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/DataSource.java b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/DataSource.java
index 59d340e..30da1fe 100755
--- a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/DataSource.java
+++ b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/DataSource.java
@@ -20,9 +20,9 @@
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.sql.SQLFeatureNotSupportedException;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.ResourceException;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.ResourceException;
 import javax.naming.Reference;
 
 import java.util.logging.Logger;
@@ -35,7 +35,7 @@
  * @author	Binod P.G
  */
 public class DataSource implements javax.sql.DataSource, java.io.Serializable,
-		com.sun.appserv.jdbcra.DataSource, javax.resource.Referenceable{ 
+		com.sun.appserv.jdbcra.DataSource, jakarta.resource.Referenceable{ 
 				   
     private ManagedConnectionFactory mcf;
     private ConnectionManager cm;				   				   
diff --git a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/LocalTransaction.java b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
index 24ae3c7..8ebe057 100755
--- a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
+++ b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
@@ -17,8 +17,8 @@
 package com.sun.jdbcra.spi;
 
 import com.sun.jdbcra.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.LocalTransactionException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.LocalTransactionException;
 
 /**
  * <code>LocalTransaction</code> implementation for Generic JDBC Connector.
@@ -26,7 +26,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class LocalTransaction implements javax.resource.spi.LocalTransaction {
+public class LocalTransaction implements jakarta.resource.spi.LocalTransaction {
     
     private ManagedConnection mc;
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/ManagedConnection.java b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
index 29e75a6..30f460a 100755
--- a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
@@ -16,8 +16,8 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.*;
-import javax.resource.*;
+import jakarta.resource.spi.*;
+import jakarta.resource.*;
 import javax.security.auth.Subject;
 import java.io.PrintWriter;
 import javax.transaction.xa.XAResource;
@@ -28,8 +28,8 @@
 import javax.sql.XAConnection;
 import java.sql.Connection;
 import java.sql.SQLException;
-import javax.resource.NotSupportedException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.spi.security.PasswordCredential;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.LocalTransaction;
 import com.sun.jdbcra.spi.ManagedConnectionMetaData;
@@ -44,7 +44,7 @@
  * @version	1.0, 02/07/22
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnection implements javax.resource.spi.ManagedConnection {
+public class ManagedConnection implements jakarta.resource.spi.ManagedConnection {
 
     public static final int ISNOTAPOOLEDCONNECTION = 0;
     public static final int ISPOOLEDCONNECTION = 1;
@@ -59,7 +59,7 @@
     private Hashtable connectionHandles;
     private PrintWriter logWriter;
     private PasswordCredential passwdCredential;
-    private javax.resource.spi.ManagedConnectionFactory mcf = null;
+    private jakarta.resource.spi.ManagedConnectionFactory mcf = null;
     private XAResource xar = null;
     public ConnectionHolder activeConnectionHandle;
     
@@ -100,7 +100,7 @@
      *					object passed
      */
     public ManagedConnection(PooledConnection pooledConn, java.sql.Connection sqlConn, 
-        PasswordCredential passwdCred, javax.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
+        PasswordCredential passwdCred, jakarta.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
         if(pooledConn == null && sqlConn == null) {
             throw new ResourceException("Connection object cannot be null");
         }
@@ -276,7 +276,7 @@
      * @throws	SecurityException	if there is a mismatch between the
      *        	                 	password credentials or reauthentication is requested
      */
-    public Object getConnection(Subject sub, javax.resource.spi.ConnectionRequestInfo cxReqInfo) 
+    public Object getConnection(Subject sub, jakarta.resource.spi.ConnectionRequestInfo cxReqInfo) 
         throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getConnection");
@@ -286,7 +286,7 @@
         PasswordCredential passwdCred = SecurityUtils.getPasswordCredential(this.mcf, sub, cxRequestInfo);
             
         if(SecurityUtils.isPasswordCredentialEqual(this.passwdCredential, passwdCred) == false) {
-            throw new javax.resource.spi.SecurityException("Re-authentication not supported");
+            throw new jakarta.resource.spi.SecurityException("Re-authentication not supported");
         }
         
         //GJCINT
@@ -324,7 +324,7 @@
      * @return	<code>LocalTransaction</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
+    public jakarta.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getLocalTransaction");
         }
@@ -356,7 +356,7 @@
      * @return	<code>ManagedConnectionMetaData</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
+    public jakarta.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In getMetaData");
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
index 78537a9..20f03aa 100755
--- a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
+++ b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
@@ -18,7 +18,7 @@
 
 import com.sun.jdbcra.spi.ManagedConnection;
 import java.sql.SQLException;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
@@ -28,7 +28,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnectionMetaData implements javax.resource.spi.ManagedConnectionMetaData {
+public class ManagedConnectionMetaData implements jakarta.resource.spi.ManagedConnectionMetaData {
 
     private java.sql.DatabaseMetaData dmd = null;
     private ManagedConnection mc;
@@ -111,7 +111,7 @@
      * @throws	<code>ResourceException</code>
      */
     public String getUserName() throws ResourceException {
-        javax.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
+        jakarta.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
         if(pc != null) {
             return pc.getUserName();
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/XAManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/XAManagedConnectionFactory.java
index 6940baf..422658d 100755
--- a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/XAManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/spi/XAManagedConnectionFactory.java
@@ -16,15 +16,15 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.*;
-import javax.resource.spi.*;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.*;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.ConnectionManager;
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import com.sun.jdbcra.spi.ManagedConnectionFactory;
 import com.sun.jdbcra.common.DataSourceSpec;
 import java.util.logging.Logger;
@@ -63,7 +63,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In createManagedConnection");
@@ -79,7 +79,7 @@
                 dataSourceObj = (javax.sql.XADataSource) dsObjBuilder.constructDataSourceObject();
             } catch(ClassCastException cce) {
 	        _logger.log(Level.SEVERE, "jdbc.exc_cce", cce);
-                throw new javax.resource.ResourceException(cce.getMessage());
+                throw new jakarta.resource.ResourceException(cce.getMessage());
             }
         }
         
diff --git a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/util/MethodExecutor.java b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/util/MethodExecutor.java
index cbf597b..ce321af 100755
--- a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/util/MethodExecutor.java
+++ b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/util/MethodExecutor.java
@@ -19,7 +19,7 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.InvocationTargetException;
 import java.util.Vector;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/util/SecurityUtils.java b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/util/SecurityUtils.java
index 6405c61..fc149bf 100755
--- a/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/util/SecurityUtils.java
+++ b/appserver/tests/appserv-tests/devtests/connector/txlevelswitch/ra/src/com/sun/jdbcra/util/SecurityUtils.java
@@ -19,9 +19,9 @@
 import javax.security.auth.Subject;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import javax.resource.spi.security.PasswordCredential;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import java.util.Set;
 import java.util.Iterator;
@@ -56,7 +56,7 @@
      * @throws	<code>SecurityException</code>	if access to the <code>Subject</code> instance is denied
      */
     public static PasswordCredential getPasswordCredential(final ManagedConnectionFactory mcf,
-         final Subject subject, javax.resource.spi.ConnectionRequestInfo info) throws ResourceException {
+         final Subject subject, jakarta.resource.spi.ConnectionRequestInfo info) throws ResourceException {
 
 	if (info == null) {
             if (subject == null) {
@@ -77,7 +77,7 @@
                         }
                     });
                 if (pc == null) {
-                    throw new javax.resource.spi.SecurityException("No PasswordCredential found");
+                    throw new jakarta.resource.spi.SecurityException("No PasswordCredential found");
                 } else {
                     return pc;
                 }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/README.txt b/appserver/tests/appserv-tests/devtests/connector/v3/README.txt
index 8cc9262..d76a695 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/README.txt
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/README.txt
@@ -67,8 +67,8 @@
 set environment :
 export APS_HOME=<appserv-tests> directory
 export S1AS_HOME=<GlassFish Installation> directory
-Set CLASSPATH to contain javax.resource.jar.
-export CLASSPATH=$S1AS_HOME/modules/javax.resource.jar:$CLASSPATH
+Set CLASSPATH to contain jakarta.resource.jar.
+export CLASSPATH=$S1AS_HOME/modules/jakarta.resource.jar:$CLASSPATH
 Note: You need install and configure ant manually:
 export ANT_HOME=<your ant home directory>
 export PATH=$ANT_HOME/bin:$PATH 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci-embedded/build.xml b/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci-embedded/build.xml
index 80b3519..29cac50 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci-embedded/build.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci-embedded/build.xml
@@ -68,7 +68,7 @@
     <target name="create-pool">
         <antcall target="create-connector-connpool-common">
             <param name="ra.name" value="connector-embedded-cciApp#cciblackbox-${tx.mode}"/>
-            <param name="connection.defname" value="javax.resource.cci.ConnectionFactory"/>
+            <param name="connection.defname" value="jakarta.resource.cci.ConnectionFactory"/>
             <param name="connector.conpool.name" value="EMBEDDED-CCI-CONNPOOL"/>
         </antcall>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci-embedded/descriptor/ejb-jar.xml b/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci-embedded/descriptor/ejb-jar.xml
index 9fe501b..5da7172 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci-embedded/descriptor/ejb-jar.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci-embedded/descriptor/ejb-jar.xml
@@ -49,7 +49,7 @@
             </security-identity>
             <resource-ref>
                 <res-ref-name>eis/EMBEDDEDCCIEIS</res-ref-name>
-                <res-type>javax.resource.cci.ConnectionFactory</res-type>
+                <res-type>jakarta.resource.cci.ConnectionFactory</res-type>
                 <res-auth>Application</res-auth>
                 <res-sharing-scope>Shareable</res-sharing-scope>
             </resource-ref>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci-embedded/descriptor/ra.xml b/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci-embedded/descriptor/ra.xml
index cc94f79..08dc137 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci-embedded/descriptor/ra.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci-embedded/descriptor/ra.xml
@@ -27,9 +27,9 @@
     <resourceadapter>
         <managedconnectionfactory-class>com.sun.connector.cciblackbox.CciLocalTxManagedConnectionFactory
         </managedconnectionfactory-class>
-        <connectionfactory-interface>javax.resource.cci.ConnectionFactory</connectionfactory-interface>
+        <connectionfactory-interface>jakarta.resource.cci.ConnectionFactory</connectionfactory-interface>
         <connectionfactory-impl-class>com.sun.connector.cciblackbox.CciConnectionFactory</connectionfactory-impl-class>
-        <connection-interface>javax.resource.cci.Connection</connection-interface>
+        <connection-interface>jakarta.resource.cci.Connection</connection-interface>
         <connection-impl-class>com.sun.connector.cciblackbox.CciConnection</connection-impl-class>
         <transaction-support>LocalTransaction</transaction-support>
         <config-property>
@@ -39,7 +39,7 @@
         </config-property>
         <authentication-mechanism>
             <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-            <credential-interface>javax.resource.security.PasswordCredential</credential-interface>
+            <credential-interface>jakarta.resource.security.PasswordCredential</credential-interface>
         </authentication-mechanism>
         <reauthentication-support>false</reauthentication-support>
     </resourceadapter>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci-embedded/ejb/CoffeeBean.java b/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci-embedded/ejb/CoffeeBean.java
index f9fc3ef..563ee3a 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci-embedded/ejb/CoffeeBean.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci-embedded/ejb/CoffeeBean.java
@@ -19,8 +19,8 @@
 import java.math.BigDecimal;
 import java.util.*;
 import jakarta.ejb.*;
-import javax.resource.cci.*;
-import javax.resource.ResourceException;
+import jakarta.resource.cci.*;
+import jakarta.resource.ResourceException;
 import javax.naming.*;
 
 import com.sun.connector.cciblackbox.*;
@@ -42,7 +42,7 @@
             Context ic = new InitialContext();
             user = (String) ic.lookup("java:comp/env/user");
             password = (String) ic.lookup("java:comp/env/password");
-            cf = (javax.resource.cci.ConnectionFactory) ic.lookup("java:comp/env/eis/EMBEDDEDCCIEIS");
+            cf = (jakarta.resource.cci.ConnectionFactory) ic.lookup("java:comp/env/eis/EMBEDDEDCCIEIS");
         } catch (NamingException ex) {
             ex.printStackTrace();
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci/build.xml b/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci/build.xml
index 9586644..92b423d 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci/build.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci/build.xml
@@ -191,7 +191,7 @@
         <antcall target="create-connector-connpool-common">
             <param name="ra.name" value="cciblackbox-${tx.mode}"/>
             <param name="connection.defname"
-                   value="javax.resource.cci.ConnectionFactory"/>
+                   value="jakarta.resource.cci.ConnectionFactory"/>
             <param name="connector.conpool.name" value="CCI-CONNPOOL"/>
         </antcall>
     </target>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci/descriptor/ejb-jar.xml b/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci/descriptor/ejb-jar.xml
index 6d8a877..158a985 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci/descriptor/ejb-jar.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci/descriptor/ejb-jar.xml
@@ -49,7 +49,7 @@
             </security-identity>
             <resource-ref>
                 <res-ref-name>eis/CCIEIS</res-ref-name>
-                <res-type>javax.resource.cci.ConnectionFactory</res-type>
+                <res-type>jakarta.resource.cci.ConnectionFactory</res-type>
                 <res-auth>Application</res-auth>
                 <res-sharing-scope>Shareable</res-sharing-scope>
             </resource-ref>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci/descriptor/ra.xml b/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci/descriptor/ra.xml
index cc94f79..08dc137 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci/descriptor/ra.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci/descriptor/ra.xml
@@ -27,9 +27,9 @@
     <resourceadapter>
         <managedconnectionfactory-class>com.sun.connector.cciblackbox.CciLocalTxManagedConnectionFactory
         </managedconnectionfactory-class>
-        <connectionfactory-interface>javax.resource.cci.ConnectionFactory</connectionfactory-interface>
+        <connectionfactory-interface>jakarta.resource.cci.ConnectionFactory</connectionfactory-interface>
         <connectionfactory-impl-class>com.sun.connector.cciblackbox.CciConnectionFactory</connectionfactory-impl-class>
-        <connection-interface>javax.resource.cci.Connection</connection-interface>
+        <connection-interface>jakarta.resource.cci.Connection</connection-interface>
         <connection-impl-class>com.sun.connector.cciblackbox.CciConnection</connection-impl-class>
         <transaction-support>LocalTransaction</transaction-support>
         <config-property>
@@ -39,7 +39,7 @@
         </config-property>
         <authentication-mechanism>
             <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-            <credential-interface>javax.resource.security.PasswordCredential</credential-interface>
+            <credential-interface>jakarta.resource.security.PasswordCredential</credential-interface>
         </authentication-mechanism>
         <reauthentication-support>false</reauthentication-support>
     </resourceadapter>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci/ejb/CoffeeBean.java b/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci/ejb/CoffeeBean.java
index bc6b36c..37882c4 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci/ejb/CoffeeBean.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/SunRaXml/cci/ejb/CoffeeBean.java
@@ -19,8 +19,8 @@
 import java.math.BigDecimal;
 import java.util.*;
 import jakarta.ejb.*;
-import javax.resource.cci.*;
-import javax.resource.ResourceException;
+import jakarta.resource.cci.*;
+import jakarta.resource.ResourceException;
 import javax.naming.*;
 
 import com.sun.connector.cciblackbox.*;
@@ -42,7 +42,7 @@
             Context ic = new InitialContext();
             user = (String) ic.lookup("java:comp/env/user");
             password = (String) ic.lookup("java:comp/env/password");
-            cf = (javax.resource.cci.ConnectionFactory) ic.lookup("java:comp/env/eis/CCIEIS");
+            cf = (jakarta.resource.cci.ConnectionFactory) ic.lookup("java:comp/env/eis/CCIEIS");
         } catch (NamingException ex) {
             ex.printStackTrace();
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/descriptor/connector-resource.xml b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/descriptor/connector-resource.xml
index d8a9b54..fa6df72 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/descriptor/connector-resource.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/descriptor/connector-resource.xml
@@ -22,7 +22,7 @@
              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/javaee_7.xsd>
 	<description>global-scope resource defined in application DD</description>
 	<name>java:global/env/Application_Level_ConnectionFactory</name>
-	<class-name>javax.resource.cci.ConnectionFactory</class-name>
+	<class-name>jakarta.resource.cci.ConnectionFactory</class-name>
 	<resource-adapter>#crd-ra</resource-adapter>
 	<property>
 		<name>transactionSupport</name>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ejb/HelloEJB.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ejb/HelloEJB.java
index 4ff0a9d..bda5961 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ejb/HelloEJB.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ejb/HelloEJB.java
@@ -19,8 +19,8 @@
 import jakarta.ejb.Stateless;
 
 import javax.naming.InitialContext;
-import javax.resource.AdministeredObjectDefinitions;
-import javax.resource.AdministeredObjectDefinition;
+import jakarta.resource.AdministeredObjectDefinitions;
+import jakarta.resource.AdministeredObjectDefinition;
 
 @AdministeredObjectDefinitions(
      value = {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ejb/HelloStatefulEJB.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ejb/HelloStatefulEJB.java
index 5959a75..45888fa 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ejb/HelloStatefulEJB.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ejb/HelloStatefulEJB.java
@@ -18,8 +18,8 @@
 
 import jakarta.ejb.Stateful;
 import jakarta.annotation.PostConstruct;
-import javax.resource.AdministeredObjectDefinitions;
-import javax.resource.AdministeredObjectDefinition;
+import jakarta.resource.AdministeredObjectDefinitions;
+import jakarta.resource.AdministeredObjectDefinition;
 
 import javax.naming.*;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/AbstractAdminObject.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/AbstractAdminObject.java
index ff4d599..f532aec 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/AbstractAdminObject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/AbstractAdminObject.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.*;
+import jakarta.resource.spi.*;
 
 public abstract class AbstractAdminObject {
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/AbstractResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/AbstractResourceAdapter.java
index a337cb0..07b9d78 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/AbstractResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/AbstractResourceAdapter.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.*;
+import jakarta.resource.spi.*;
 
 public abstract class AbstractResourceAdapter{
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/DeliveryWork.java
index 7a686d4..7e3635f 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/DeliveryWork.java
@@ -17,8 +17,8 @@
 package connector;
 
 import java.lang.reflect.Method;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.work.Work;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.work.Work;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/MyAdminObject.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/MyAdminObject.java
index 458b9a1..319f107 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/MyAdminObject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/MyAdminObject.java
@@ -19,8 +19,8 @@
 import jakarta.jms.Destination;
 import jakarta.jms.JMSException;
 import jakarta.jms.Queue;
-import javax.resource.spi.AdministeredObject;
-import javax.resource.spi.ConfigProperty;
+import jakarta.resource.spi.AdministeredObject;
+import jakarta.resource.spi.ConfigProperty;
 
 @AdministeredObject(
         adminObjectInterfaces = {Destination.class,Queue.class}
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/MyConnection.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/MyConnection.java
index e30a6e3..342b29c 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/MyConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/MyConnection.java
@@ -16,12 +16,12 @@
 
 package connector;
 
-import javax.resource.ResourceException;
-import javax.resource.cci.Connection;
-import javax.resource.cci.ConnectionMetaData;
-import javax.resource.cci.Interaction;
-import javax.resource.cci.LocalTransaction;
-import javax.resource.cci.ResultSetInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.cci.Connection;
+import jakarta.resource.cci.ConnectionMetaData;
+import jakarta.resource.cci.Interaction;
+import jakarta.resource.cci.LocalTransaction;
+import jakarta.resource.cci.ResultSetInfo;
 
 public class MyConnection implements Connection {
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/MyConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/MyConnectionFactory.java
index a613d69..9f24648 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/MyConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/MyConnectionFactory.java
@@ -18,13 +18,13 @@
 
 import javax.naming.NamingException;
 import javax.naming.Reference;
-import javax.resource.ResourceException;
-import javax.resource.cci.Connection;
-import javax.resource.cci.ConnectionFactory;
-import javax.resource.cci.ConnectionSpec;
-import javax.resource.cci.RecordFactory;
-import javax.resource.cci.ResourceAdapterMetaData;
-import javax.resource.spi.ConnectionManager;
+import jakarta.resource.ResourceException;
+import jakarta.resource.cci.Connection;
+import jakarta.resource.cci.ConnectionFactory;
+import jakarta.resource.cci.ConnectionSpec;
+import jakarta.resource.cci.RecordFactory;
+import jakarta.resource.cci.ResourceAdapterMetaData;
+import jakarta.resource.spi.ConnectionManager;
 
 public class MyConnectionFactory implements ConnectionFactory {
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/MyManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/MyManagedConnectionFactory.java
index 2ba43b6..05b3118 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/MyManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/MyManagedConnectionFactory.java
@@ -19,17 +19,17 @@
 import java.io.PrintWriter;
 import java.util.Set;
 
-import javax.resource.ResourceException;
-import javax.resource.cci.Connection;
-import javax.resource.cci.ConnectionFactory;
-import javax.resource.spi.ConfigProperty;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ConnectionDefinition;
-import javax.resource.spi.TransactionSupport;
-import javax.resource.spi.TransactionSupport.TransactionSupportLevel;
+import jakarta.resource.ResourceException;
+import jakarta.resource.cci.Connection;
+import jakarta.resource.cci.ConnectionFactory;
+import jakarta.resource.spi.ConfigProperty;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ConnectionDefinition;
+import jakarta.resource.spi.TransactionSupport;
+import jakarta.resource.spi.TransactionSupport.TransactionSupportLevel;
 import javax.security.auth.Subject;
 
 @ConnectionDefinition(
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/MyWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/MyWork.java
index 99280ef..614381e 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/MyWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/MyWork.java
@@ -17,9 +17,9 @@
 package connector;
 
 import java.lang.reflect.Method;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/SimpleActivationSpec.java
index fd84475..512e5c6 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/SimpleActivationSpec.java
@@ -16,9 +16,9 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.Activation;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.Activation;
 
 /**
  * This class is supposed to implemented as a JavaBean
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/SimpleResourceAdapterImpl.java
index 028bad4..28d9e29 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -17,14 +17,14 @@
 package connector;
 
 import java.util.*;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.TransactionSupport.TransactionSupportLevel;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.*;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.TransactionSupport.TransactionSupportLevel;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 
 /**
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/TestWMWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/TestWMWork.java
index c2f521c..ee0fae9 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/TestWMWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/TestWMWork.java
@@ -16,10 +16,10 @@
 
 package connector;
 
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.WorkException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.WorkException;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/V3WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/V3WorkDispatcher.java
index 53fdc10..8adf3cc 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/V3WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/V3WorkDispatcher.java
@@ -16,11 +16,11 @@
 
 package connector;
 
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
 
 public class V3WorkDispatcher extends WorkDispatcher {
     public V3WorkDispatcher(String id, BootstrapContext ctx, MessageEndpointFactory factory, ActivationSpec spec) {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/WorkDispatcher.java
index 3a27195..42249dc 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/ra/src/connector/WorkDispatcher.java
@@ -17,15 +17,15 @@
 package connector;
 
 import java.lang.reflect.Method;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 import javax.transaction.xa.Xid;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/servlet/Servlet.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/servlet/Servlet.java
index 4e17586..31ed4db 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/servlet/Servlet.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition-embedra/servlet/Servlet.java
@@ -18,8 +18,8 @@
 
 import java.io.*;
 
-import javax.resource.AdministeredObjectDefinitions;
-import javax.resource.AdministeredObjectDefinition;
+import jakarta.resource.AdministeredObjectDefinitions;
+import jakarta.resource.AdministeredObjectDefinition;
 import javax.servlet.*;
 import javax.servlet.http.*;
 import javax.servlet.annotation.*;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/descriptor/connector-resource.xml b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/descriptor/connector-resource.xml
index a9ab628..5c544c1 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/descriptor/connector-resource.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/descriptor/connector-resource.xml
@@ -22,7 +22,7 @@
              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/javaee_7.xsd>
 	<description>global-scope resource defined in application DD</description>
 	<name>java:global/env/Application_Level_ConnectionFactory</name>
-	<class-name>javax.resource.cci.ConnectionFactory</class-name>
+	<class-name>jakarta.resource.cci.ConnectionFactory</class-name>
 	<resource-adapter>crd-ra</resource-adapter>
 	<property>
 		<name>transactionSupport</name>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ejb/HelloEJB.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ejb/HelloEJB.java
index 26a4938..f243c54 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ejb/HelloEJB.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ejb/HelloEJB.java
@@ -19,8 +19,8 @@
 import jakarta.ejb.Stateless;
 
 import javax.naming.InitialContext;
-import javax.resource.AdministeredObjectDefinitions;
-import javax.resource.AdministeredObjectDefinition;
+import jakarta.resource.AdministeredObjectDefinitions;
+import jakarta.resource.AdministeredObjectDefinition;
 
 @AdministeredObjectDefinitions(
      value = {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ejb/HelloStatefulEJB.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ejb/HelloStatefulEJB.java
index 537ac7a..f310b45 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ejb/HelloStatefulEJB.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ejb/HelloStatefulEJB.java
@@ -18,8 +18,8 @@
 
 import jakarta.ejb.Stateful;
 import jakarta.annotation.PostConstruct;
-import javax.resource.AdministeredObjectDefinitions;
-import javax.resource.AdministeredObjectDefinition;
+import jakarta.resource.AdministeredObjectDefinitions;
+import jakarta.resource.AdministeredObjectDefinition;
 
 import javax.naming.*;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/AbstractAdminObject.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/AbstractAdminObject.java
index ff4d599..f532aec 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/AbstractAdminObject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/AbstractAdminObject.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.*;
+import jakarta.resource.spi.*;
 
 public abstract class AbstractAdminObject {
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/AbstractResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/AbstractResourceAdapter.java
index a337cb0..07b9d78 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/AbstractResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/AbstractResourceAdapter.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.*;
+import jakarta.resource.spi.*;
 
 public abstract class AbstractResourceAdapter{
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/DeliveryWork.java
index 7a686d4..7e3635f 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/DeliveryWork.java
@@ -17,8 +17,8 @@
 package connector;
 
 import java.lang.reflect.Method;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.work.Work;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.work.Work;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/MyAdminObject.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/MyAdminObject.java
index 458b9a1..319f107 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/MyAdminObject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/MyAdminObject.java
@@ -19,8 +19,8 @@
 import jakarta.jms.Destination;
 import jakarta.jms.JMSException;
 import jakarta.jms.Queue;
-import javax.resource.spi.AdministeredObject;
-import javax.resource.spi.ConfigProperty;
+import jakarta.resource.spi.AdministeredObject;
+import jakarta.resource.spi.ConfigProperty;
 
 @AdministeredObject(
         adminObjectInterfaces = {Destination.class,Queue.class}
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/MyConnection.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/MyConnection.java
index e30a6e3..342b29c 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/MyConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/MyConnection.java
@@ -16,12 +16,12 @@
 
 package connector;
 
-import javax.resource.ResourceException;
-import javax.resource.cci.Connection;
-import javax.resource.cci.ConnectionMetaData;
-import javax.resource.cci.Interaction;
-import javax.resource.cci.LocalTransaction;
-import javax.resource.cci.ResultSetInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.cci.Connection;
+import jakarta.resource.cci.ConnectionMetaData;
+import jakarta.resource.cci.Interaction;
+import jakarta.resource.cci.LocalTransaction;
+import jakarta.resource.cci.ResultSetInfo;
 
 public class MyConnection implements Connection {
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/MyConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/MyConnectionFactory.java
index a613d69..9f24648 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/MyConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/MyConnectionFactory.java
@@ -18,13 +18,13 @@
 
 import javax.naming.NamingException;
 import javax.naming.Reference;
-import javax.resource.ResourceException;
-import javax.resource.cci.Connection;
-import javax.resource.cci.ConnectionFactory;
-import javax.resource.cci.ConnectionSpec;
-import javax.resource.cci.RecordFactory;
-import javax.resource.cci.ResourceAdapterMetaData;
-import javax.resource.spi.ConnectionManager;
+import jakarta.resource.ResourceException;
+import jakarta.resource.cci.Connection;
+import jakarta.resource.cci.ConnectionFactory;
+import jakarta.resource.cci.ConnectionSpec;
+import jakarta.resource.cci.RecordFactory;
+import jakarta.resource.cci.ResourceAdapterMetaData;
+import jakarta.resource.spi.ConnectionManager;
 
 public class MyConnectionFactory implements ConnectionFactory {
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/MyManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/MyManagedConnectionFactory.java
index 2ba43b6..05b3118 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/MyManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/MyManagedConnectionFactory.java
@@ -19,17 +19,17 @@
 import java.io.PrintWriter;
 import java.util.Set;
 
-import javax.resource.ResourceException;
-import javax.resource.cci.Connection;
-import javax.resource.cci.ConnectionFactory;
-import javax.resource.spi.ConfigProperty;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ConnectionDefinition;
-import javax.resource.spi.TransactionSupport;
-import javax.resource.spi.TransactionSupport.TransactionSupportLevel;
+import jakarta.resource.ResourceException;
+import jakarta.resource.cci.Connection;
+import jakarta.resource.cci.ConnectionFactory;
+import jakarta.resource.spi.ConfigProperty;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ConnectionDefinition;
+import jakarta.resource.spi.TransactionSupport;
+import jakarta.resource.spi.TransactionSupport.TransactionSupportLevel;
 import javax.security.auth.Subject;
 
 @ConnectionDefinition(
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/MyWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/MyWork.java
index 99280ef..614381e 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/MyWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/MyWork.java
@@ -17,9 +17,9 @@
 package connector;
 
 import java.lang.reflect.Method;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/SimpleActivationSpec.java
index fd84475..512e5c6 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/SimpleActivationSpec.java
@@ -16,9 +16,9 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.Activation;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.Activation;
 
 /**
  * This class is supposed to implemented as a JavaBean
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/SimpleResourceAdapterImpl.java
index 028bad4..28d9e29 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -17,14 +17,14 @@
 package connector;
 
 import java.util.*;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.TransactionSupport.TransactionSupportLevel;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.*;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.TransactionSupport.TransactionSupportLevel;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 
 /**
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/TestWMWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/TestWMWork.java
index c2f521c..ee0fae9 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/TestWMWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/TestWMWork.java
@@ -16,10 +16,10 @@
 
 package connector;
 
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.WorkException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.WorkException;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/V3WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/V3WorkDispatcher.java
index 53fdc10..8adf3cc 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/V3WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/V3WorkDispatcher.java
@@ -16,11 +16,11 @@
 
 package connector;
 
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
 
 public class V3WorkDispatcher extends WorkDispatcher {
     public V3WorkDispatcher(String id, BootstrapContext ctx, MessageEndpointFactory factory, ActivationSpec spec) {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/WorkDispatcher.java
index 3a27195..42249dc 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/ra/src/connector/WorkDispatcher.java
@@ -17,15 +17,15 @@
 package connector;
 
 import java.lang.reflect.Method;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 import javax.transaction.xa.Xid;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/servlet/Servlet.java b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/servlet/Servlet.java
index 19e71f6..43d59d8 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/servlet/Servlet.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/administered-object-definition/servlet/Servlet.java
@@ -18,8 +18,8 @@
 
 import java.io.*;
 
-import javax.resource.AdministeredObjectDefinitions;
-import javax.resource.AdministeredObjectDefinition;
+import jakarta.resource.AdministeredObjectDefinitions;
+import jakarta.resource.AdministeredObjectDefinition;
 import javax.servlet.*;
 import javax.servlet.http.*;
 import javax.servlet.annotation.*;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/DeliveryWork.java
index 63076d3..658233e 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/DeliveryWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyActivationSpec_1.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyActivationSpec_1.java
index 739517a..0a5d655 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyActivationSpec_1.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyActivationSpec_1.java
@@ -16,9 +16,9 @@
 
 package connector;
 
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.Activation;
-import javax.resource.spi.ConfigProperty;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.Activation;
+import jakarta.resource.spi.ConfigProperty;
 
 /**
  * This class is supposed to implemented as a JavaBean
@@ -30,7 +30,7 @@
 @Activation(
         messageListeners = {connector.MyMessageListener_1.class, connector.MyMessageListener.class}
 )
-public class MyActivationSpec_1 implements javax.resource.spi.ActivationSpec
+public class MyActivationSpec_1 implements jakarta.resource.spi.ActivationSpec
     {
 
     private String destinationName;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject.java
index 85dc0a2..8cf39a5 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.AdministeredObject;
-import javax.resource.spi.ConfigProperty;
+import jakarta.resource.spi.AdministeredObject;
+import jakarta.resource.spi.ConfigProperty;
 
 @AdministeredObject(
         adminObjectInterfaces = {connector.MyAdminObject.class}
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject_1.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject_1.java
index a002600..67cf581 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject_1.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject_1.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.ConfigProperty;
+import jakarta.resource.spi.ConfigProperty;
 
 //@README : test to make sure that administed objects defined in ra.xml (no @AdministeredObject annotation)
 // are considered for @ConfigProperty annotation
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject_2.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject_2.java
index 39c52a3..6e6de1a 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject_2.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject_2.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.AdministeredObject;
-import javax.resource.spi.ConfigProperty;
+import jakarta.resource.spi.AdministeredObject;
+import jakarta.resource.spi.ConfigProperty;
 
 //@README : test to make sure that multiple admin objects are created (one with Interface_1 and
 // another with Interface_2 with all config properties
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject_3.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject_3.java
index 6c668ac..e2e9e63 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject_3.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject_3.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.AdministeredObject;
-import javax.resource.spi.ConfigProperty;
+import jakarta.resource.spi.AdministeredObject;
+import jakarta.resource.spi.ConfigProperty;
 
 //@README : test to make sure that only one admin object is created (an admin object Interface_2 & MyAdminObject_3
 // should not be created)
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject_4.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject_4.java
index 9f2fac6..6741d11 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject_4.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject_4.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.AdministeredObject;
-import javax.resource.spi.ConfigProperty;
+import jakarta.resource.spi.AdministeredObject;
+import jakarta.resource.spi.ConfigProperty;
 
 //@README : test to make sure that only one admin object is created.
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject_5.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject_5.java
index 4182df8..2d500e8 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject_5.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/MyAdminObject_5.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.AdministeredObject;
-import javax.resource.spi.ConfigProperty;
+import jakarta.resource.spi.AdministeredObject;
+import jakarta.resource.spi.ConfigProperty;
 
 //@README : test to make sure that only one admin object is created (an admin object Interface_2 & MyAdminObject_5
 // should not be created)
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/SimpleActivationSpec.java
index d8dc543..4a963dc 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/SimpleActivationSpec.java
@@ -16,10 +16,10 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.Activation;
-import javax.resource.spi.ConfigProperty;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.Activation;
+import jakarta.resource.spi.ConfigProperty;
 
 /**
  * This class is supposed to implemented as a JavaBean
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/SimpleRA.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/SimpleRA.java
index e888b70..0fbd4e2 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/SimpleRA.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/SimpleRA.java
@@ -20,15 +20,15 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Properties;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.*;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/SimpleResourceAdapterImpl.java
index c902c65..4792432 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -20,15 +20,15 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Properties;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.*;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/SimpleResourceAdapterImpl_1.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/SimpleResourceAdapterImpl_1.java
index fabbb36..d4b85b8 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/SimpleResourceAdapterImpl_1.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/SimpleResourceAdapterImpl_1.java
@@ -21,15 +21,15 @@
 import java.util.Iterator;
 import java.util.Properties;
 import java.lang.IllegalStateException;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.*;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/SimpleResourceAdapterImpl_2.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/SimpleResourceAdapterImpl_2.java
index 30a92a2..da5ae19 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/SimpleResourceAdapterImpl_2.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/SimpleResourceAdapterImpl_2.java
@@ -21,15 +21,15 @@
 import java.util.Iterator;
 import java.util.Properties;
 import java.lang.IllegalStateException;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.*;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/WorkDispatcher.java
index fcdac24..64b71c4 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector-mixedmode/ra/src/connector/WorkDispatcher.java
@@ -18,15 +18,15 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 import javax.transaction.xa.Xid;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/AbstractAdminObject.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/AbstractAdminObject.java
index ff4d599..f532aec 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/AbstractAdminObject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/AbstractAdminObject.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.*;
+import jakarta.resource.spi.*;
 
 public abstract class AbstractAdminObject {
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/AbstractResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/AbstractResourceAdapter.java
index 1c41b37..c4892b1 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/AbstractResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/AbstractResourceAdapter.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.*;
+import jakarta.resource.spi.*;
 
 public abstract class AbstractResourceAdapter{
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/DeliveryWork.java
index 63076d3..658233e 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/DeliveryWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/MyAdminObject.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/MyAdminObject.java
index 1b7f407..2e4cfa8 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/MyAdminObject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/MyAdminObject.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.AdministeredObject;
-import javax.resource.spi.ConfigProperty;
+import jakarta.resource.spi.AdministeredObject;
+import jakarta.resource.spi.ConfigProperty;
 
 @AdministeredObject(
         adminObjectInterfaces = {connector.MyAdminObject.class}
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/MyWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/MyWork.java
index 226ca00..2ecec63 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/MyWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/MyWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/SimpleActivationSpec.java
index fd84475..512e5c6 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/SimpleActivationSpec.java
@@ -16,9 +16,9 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.Activation;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.Activation;
 
 /**
  * This class is supposed to implemented as a JavaBean
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/SimpleResourceAdapterImpl.java
index e168819..19a5e4d 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -20,15 +20,15 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Properties;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.*;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/TestWMWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/TestWMWork.java
index 839ca0e..bb05534 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/TestWMWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/TestWMWork.java
@@ -18,13 +18,13 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.WorkException;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.WorkException;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/V3WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/V3WorkDispatcher.java
index 53fdc10..8adf3cc 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/V3WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/V3WorkDispatcher.java
@@ -16,11 +16,11 @@
 
 package connector;
 
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
 
 public class V3WorkDispatcher extends WorkDispatcher {
     public V3WorkDispatcher(String id, BootstrapContext ctx, MessageEndpointFactory factory, ActivationSpec spec) {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/WorkDispatcher.java
index fcdac24..64b71c4 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-connector1.5/ra/src/connector/WorkDispatcher.java
@@ -18,15 +18,15 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 import javax.transaction.xa.Xid;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
index 2700adc..70029f1 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
@@ -22,7 +22,7 @@
 import java.util.StringTokenizer;
 import java.util.Enumeration;
 import com.sun.jdbcra.util.MethodExecutor;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
index e6f751b..ac7e748 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
@@ -16,11 +16,11 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.ConnectionManager;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import java.sql.DriverManager;
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
@@ -37,14 +37,14 @@
  * @author	Evani Sai Surya Kiran
  */
 
-public abstract class ManagedConnectionFactory implements javax.resource.spi.ManagedConnectionFactory, 
+public abstract class ManagedConnectionFactory implements jakarta.resource.spi.ManagedConnectionFactory, 
     java.io.Serializable {
     
     protected DataSourceSpec spec = new DataSourceSpec();
     protected transient DataSourceObjectBuilder dsObjBuilder;
     
     protected java.io.PrintWriter logWriter = null;
-    protected javax.resource.spi.ResourceAdapter ra = null;
+    protected jakarta.resource.spi.ResourceAdapter ra = null;
     
     private static Logger _logger;
     static {
@@ -62,7 +62,7 @@
             logWriter.println("In createConnectionFactory()");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, null);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, null);
         
         return cf;
     }
@@ -74,12 +74,12 @@
      * @param	cxManager	<code>ConnectionManager</code> passed by the application server
      * @return	Generic JDBC Connector implementation of <code>javax.sql.DataSource</code>
      */
-    public Object createConnectionFactory(javax.resource.spi.ConnectionManager cxManager) {
+    public Object createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager) {
         if(logWriter != null) {
-            logWriter.println("In createConnectionFactory(javax.resource.spi.ConnectionManager cxManager)");
+            logWriter.println("In createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager)");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, cxManager);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, cxManager);
         return cf; 
     }
     
@@ -100,7 +100,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public abstract javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public abstract jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException;
     
     /**
@@ -130,7 +130,7 @@
      * @return	<code>ResourceAdapter</code> associated with this <code>ManagedConnectionFactory</code> instance
      * @see	<code>setResourceAdapter</code>
      */
-    public javax.resource.spi.ResourceAdapter getResourceAdapter() {
+    public jakarta.resource.spi.ResourceAdapter getResourceAdapter() {
         if(logWriter != null) {
             logWriter.println("In getResourceAdapter");
         }
@@ -164,7 +164,7 @@
      *					parameter or the <code>Set</code> of <code>ManagedConnection</code>
      *					objects passed by the application server
      */
-    public javax.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
+    public jakarta.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
         javax.security.auth.Subject subject, ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In matchManagedConnections");
@@ -459,7 +459,7 @@
      *			<code>ManagedConnectionFactory</code> instance
      * @see	<code>getResourceAdapter</code>
      */
-    public void setResourceAdapter(javax.resource.spi.ResourceAdapter ra) {
+    public void setResourceAdapter(jakarta.resource.spi.ResourceAdapter ra) {
         this.ra = ra;   
     }
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
index e23995a..01dcff0 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
@@ -16,10 +16,10 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.NotSupportedException;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.NotSupportedException;
 import javax.transaction.xa.XAResource;
-import javax.resource.spi.*;
+import jakarta.resource.spi.*;
 
 /**
  * <code>ResourceAdapter</code> implementation for Generic JDBC Connector.
@@ -41,7 +41,7 @@
         )},
         reauthenticationSupport = false
 )
-public class ResourceAdapter implements javax.resource.spi.ResourceAdapter {
+public class ResourceAdapter implements jakarta.resource.spi.ResourceAdapter {
 
     public String raProp = null;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionManager.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
index 688e0fc..b219cd2 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
@@ -16,10 +16,10 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 
 /**
  * ConnectionManager implementation for Generic JDBC Connector.
@@ -27,7 +27,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionManager implements javax.resource.spi.ConnectionManager{ 
+public class ConnectionManager implements jakarta.resource.spi.ConnectionManager{ 
 
     /**
      * Returns a <code>Connection </code> object to the <code>ConnectionFactory</code>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
index 997c7b1..39c7876 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
@@ -22,7 +22,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionRequestInfo implements javax.resource.spi.ConnectionRequestInfo{ 
+public class ConnectionRequestInfo implements jakarta.resource.spi.ConnectionRequestInfo{ 
 
     private String user;
     private String password;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
index 9622c31..b4a6316 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
@@ -16,15 +16,15 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ConnectionDefinition;
-import javax.resource.spi.ConfigProperty;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ConnectionDefinition;
+import jakarta.resource.spi.ConfigProperty;
 
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import java.util.logging.Logger;
 import java.util.logging.Level;
 
@@ -68,7 +68,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In createManagedConnection");
@@ -85,7 +85,7 @@
                 dataSourceObj = (javax.sql.DataSource) dsObjBuilder.constructDataSourceObject();
             } catch(ClassCastException cce) {
 	        _logger.log(Level.SEVERE, "jdbc.exc_cce", cce);
-                throw new javax.resource.ResourceException(cce.getMessage());
+                throw new jakarta.resource.ResourceException(cce.getMessage());
             }
         }
         
@@ -106,7 +106,7 @@
         } catch(java.sql.SQLException sqle) {
             sqle.printStackTrace();
 	    _logger.log(Level.WARNING, "jdbc.exc_create_conn", sqle);
-            throw new javax.resource.spi.ResourceAllocationException("The connection could not be allocated: " + 
+            throw new jakarta.resource.spi.ResourceAllocationException("The connection could not be allocated: " + 
                 sqle.getMessage());
         } catch(Exception e){
             System.out.println("V3-TEST : unable to get connection");
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/DataSource.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/DataSource.java
index 150a03e..d90085d 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/DataSource.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/DataSource.java
@@ -20,9 +20,9 @@
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.sql.SQLFeatureNotSupportedException;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.ResourceException;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.ResourceException;
 import javax.naming.Reference;
 
 import java.util.logging.Logger;
@@ -35,7 +35,7 @@
  * @author	Binod P.G
  */
 public class DataSource implements javax.sql.DataSource, java.io.Serializable,
-		com.sun.appserv.jdbcra.DataSource, javax.resource.Referenceable{ 
+		com.sun.appserv.jdbcra.DataSource, jakarta.resource.Referenceable{ 
 				   
     private ManagedConnectionFactory mcf;
     private ConnectionManager cm;				   				   
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/JdbcSetupAdminImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/JdbcSetupAdminImpl.java
index cd44789..f89be57 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/JdbcSetupAdminImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/JdbcSetupAdminImpl.java
@@ -18,9 +18,9 @@
 
 import javax.naming.*;
 import javax.sql.*;
-import javax.resource.spi.Activation;
-import javax.resource.spi.AdministeredObject;
-import javax.resource.spi.ConfigProperty;
+import jakarta.resource.spi.Activation;
+import jakarta.resource.spi.AdministeredObject;
+import jakarta.resource.spi.ConfigProperty;
 import java.sql.*;
 // import javax.sql.DataSource;
 @AdministeredObject(
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/LocalTransaction.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
index 24ae3c7..8ebe057 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
@@ -17,8 +17,8 @@
 package com.sun.jdbcra.spi;
 
 import com.sun.jdbcra.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.LocalTransactionException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.LocalTransactionException;
 
 /**
  * <code>LocalTransaction</code> implementation for Generic JDBC Connector.
@@ -26,7 +26,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class LocalTransaction implements javax.resource.spi.LocalTransaction {
+public class LocalTransaction implements jakarta.resource.spi.LocalTransaction {
     
     private ManagedConnection mc;
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnection.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
index 29e75a6..30f460a 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
@@ -16,8 +16,8 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.*;
-import javax.resource.*;
+import jakarta.resource.spi.*;
+import jakarta.resource.*;
 import javax.security.auth.Subject;
 import java.io.PrintWriter;
 import javax.transaction.xa.XAResource;
@@ -28,8 +28,8 @@
 import javax.sql.XAConnection;
 import java.sql.Connection;
 import java.sql.SQLException;
-import javax.resource.NotSupportedException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.spi.security.PasswordCredential;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.LocalTransaction;
 import com.sun.jdbcra.spi.ManagedConnectionMetaData;
@@ -44,7 +44,7 @@
  * @version	1.0, 02/07/22
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnection implements javax.resource.spi.ManagedConnection {
+public class ManagedConnection implements jakarta.resource.spi.ManagedConnection {
 
     public static final int ISNOTAPOOLEDCONNECTION = 0;
     public static final int ISPOOLEDCONNECTION = 1;
@@ -59,7 +59,7 @@
     private Hashtable connectionHandles;
     private PrintWriter logWriter;
     private PasswordCredential passwdCredential;
-    private javax.resource.spi.ManagedConnectionFactory mcf = null;
+    private jakarta.resource.spi.ManagedConnectionFactory mcf = null;
     private XAResource xar = null;
     public ConnectionHolder activeConnectionHandle;
     
@@ -100,7 +100,7 @@
      *					object passed
      */
     public ManagedConnection(PooledConnection pooledConn, java.sql.Connection sqlConn, 
-        PasswordCredential passwdCred, javax.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
+        PasswordCredential passwdCred, jakarta.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
         if(pooledConn == null && sqlConn == null) {
             throw new ResourceException("Connection object cannot be null");
         }
@@ -276,7 +276,7 @@
      * @throws	SecurityException	if there is a mismatch between the
      *        	                 	password credentials or reauthentication is requested
      */
-    public Object getConnection(Subject sub, javax.resource.spi.ConnectionRequestInfo cxReqInfo) 
+    public Object getConnection(Subject sub, jakarta.resource.spi.ConnectionRequestInfo cxReqInfo) 
         throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getConnection");
@@ -286,7 +286,7 @@
         PasswordCredential passwdCred = SecurityUtils.getPasswordCredential(this.mcf, sub, cxRequestInfo);
             
         if(SecurityUtils.isPasswordCredentialEqual(this.passwdCredential, passwdCred) == false) {
-            throw new javax.resource.spi.SecurityException("Re-authentication not supported");
+            throw new jakarta.resource.spi.SecurityException("Re-authentication not supported");
         }
         
         //GJCINT
@@ -324,7 +324,7 @@
      * @return	<code>LocalTransaction</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
+    public jakarta.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getLocalTransaction");
         }
@@ -356,7 +356,7 @@
      * @return	<code>ManagedConnectionMetaData</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
+    public jakarta.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In getMetaData");
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
index 78537a9..20f03aa 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
@@ -18,7 +18,7 @@
 
 import com.sun.jdbcra.spi.ManagedConnection;
 import java.sql.SQLException;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
@@ -28,7 +28,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnectionMetaData implements javax.resource.spi.ManagedConnectionMetaData {
+public class ManagedConnectionMetaData implements jakarta.resource.spi.ManagedConnectionMetaData {
 
     private java.sql.DatabaseMetaData dmd = null;
     private ManagedConnection mc;
@@ -111,7 +111,7 @@
      * @throws	<code>ResourceException</code>
      */
     public String getUserName() throws ResourceException {
-        javax.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
+        jakarta.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
         if(pc != null) {
             return pc.getUserName();
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/util/MethodExecutor.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/util/MethodExecutor.java
index cbf597b..ce321af 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/util/MethodExecutor.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/util/MethodExecutor.java
@@ -19,7 +19,7 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.InvocationTargetException;
 import java.util.Vector;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/util/SecurityUtils.java b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/util/SecurityUtils.java
index 6405c61..fc149bf 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/util/SecurityUtils.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/annotation-embeddedweb/ra/src/com/sun/jdbcra/util/SecurityUtils.java
@@ -19,9 +19,9 @@
 import javax.security.auth.Subject;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import javax.resource.spi.security.PasswordCredential;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import java.util.Set;
 import java.util.Iterator;
@@ -56,7 +56,7 @@
      * @throws	<code>SecurityException</code>	if access to the <code>Subject</code> instance is denied
      */
     public static PasswordCredential getPasswordCredential(final ManagedConnectionFactory mcf,
-         final Subject subject, javax.resource.spi.ConnectionRequestInfo info) throws ResourceException {
+         final Subject subject, jakarta.resource.spi.ConnectionRequestInfo info) throws ResourceException {
 
 	if (info == null) {
             if (subject == null) {
@@ -77,7 +77,7 @@
                         }
                     });
                 if (pc == null) {
-                    throw new javax.resource.spi.SecurityException("No PasswordCredential found");
+                    throw new jakarta.resource.spi.SecurityException("No PasswordCredential found");
                 } else {
                     return pc;
                 }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/DeliveryWork.java
index 63076d3..658233e 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/DeliveryWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/JSR322Work.java b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/JSR322Work.java
index eda3858..5107ac1 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/JSR322Work.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/JSR322Work.java
@@ -16,9 +16,9 @@
 
 package connector;
 
-import javax.resource.spi.work.WorkContextProvider;
-import javax.resource.spi.work.WorkContext;
-import javax.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.work.WorkContextProvider;
+import jakarta.resource.spi.work.WorkContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
 import java.util.List;
 import java.util.ArrayList;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/MyAdminObject.java b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/MyAdminObject.java
index c7596b4..a68a5b7 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/MyAdminObject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/MyAdminObject.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.*;
+import jakarta.resource.spi.*;
 
 public class MyAdminObject implements java.io.Serializable, ResourceAdapterAssociation {
 
@@ -37,7 +37,7 @@
     }
 
 
-    public void setResourceAdapter(ResourceAdapter ra) throws javax.resource.ResourceException{
+    public void setResourceAdapter(ResourceAdapter ra) throws jakarta.resource.ResourceException{
         this.resourceAdapter = ra;
     }
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/MyPlainSICWithGPC.java b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/MyPlainSICWithGPC.java
index c98bc54..7043a92 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/MyPlainSICWithGPC.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/MyPlainSICWithGPC.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import javax.security.auth.Subject;
 import javax.security.auth.message.callback.GroupPrincipalCallback;
 import javax.security.auth.callback.CallbackHandler;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/MyPlainSecurityContext.java b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/MyPlainSecurityContext.java
index 595daf8..d1dcc5d 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/MyPlainSecurityContext.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/MyPlainSecurityContext.java
@@ -25,7 +25,7 @@
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.Callback;
 import javax.security.auth.callback.UnsupportedCallbackException;
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import java.util.List;
 import java.util.ArrayList;
 import java.io.IOException;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/MySecurityContext.java b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/MySecurityContext.java
index 294cebf..b377185 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/MySecurityContext.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/MySecurityContext.java
@@ -24,7 +24,7 @@
 import javax.security.auth.message.callback.CallerPrincipalCallback;
 import javax.security.auth.message.callback.PasswordValidationCallback;
 import javax.security.auth.message.callback.GroupPrincipalCallback;
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import java.io.IOException;
 import java.util.List;
 import java.util.ArrayList;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/MySecurityContextWithListener.java b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/MySecurityContextWithListener.java
index b3decce..e64fdfe 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/MySecurityContextWithListener.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/MySecurityContextWithListener.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.WorkContextLifecycleListener;
+import jakarta.resource.spi.work.WorkContextLifecycleListener;
 
 
 public class MySecurityContextWithListener extends MySecurityContext implements WorkContextLifecycleListener {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/NestedWork_Child.java b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/NestedWork_Child.java
index 1428bca..ff23161 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/NestedWork_Child.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/NestedWork_Child.java
@@ -16,9 +16,9 @@
 
 package connector;
 
-import javax.resource.spi.work.*;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.XATerminator;
+import jakarta.resource.spi.work.*;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.XATerminator;
 import javax.transaction.xa.Xid;
 import java.util.List;
 import java.util.ArrayList;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/NestedWork_Parent.java b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/NestedWork_Parent.java
index 4e60c96..2cb8991 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/NestedWork_Parent.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/NestedWork_Parent.java
@@ -16,9 +16,9 @@
 
 package connector;
 
-import javax.resource.spi.work.*;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.XATerminator;
+import jakarta.resource.spi.work.*;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.XATerminator;
 import javax.transaction.xa.Xid;
 import java.util.List;
 import java.util.ArrayList;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/SimpleActivationSpec.java
index 56e8e32..8182ef5 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/SimpleActivationSpec.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
 
 /**
  * This class is supposed to implemented as a JavaBean
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/SimpleResourceAdapterImpl.java
index 1ae55e0..c5dea45 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -20,20 +20,20 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Properties;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/SinglePrincipalSIC.java b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/SinglePrincipalSIC.java
index ec502ef..87b408c 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/SinglePrincipalSIC.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/SinglePrincipalSIC.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.Callback;
 import javax.security.auth.Subject;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/UnauthenticatedIdentityOptWorkContext.java b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/UnauthenticatedIdentityOptWorkContext.java
index a7db1e2..24d47d9 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/UnauthenticatedIdentityOptWorkContext.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/UnauthenticatedIdentityOptWorkContext.java
@@ -23,7 +23,7 @@
 import javax.security.auth.callback.UnsupportedCallbackException;
 import javax.security.auth.Subject;
 import javax.security.auth.message.callback.CallerPrincipalCallback;
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import java.io.IOException;
 import java.util.List;
 import java.util.ArrayList;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/UnauthenticatedSecurityContext_EmptyExecutionSubject.java b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/UnauthenticatedSecurityContext_EmptyExecutionSubject.java
index cc18a13..a31916a 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/UnauthenticatedSecurityContext_EmptyExecutionSubject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/UnauthenticatedSecurityContext_EmptyExecutionSubject.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.Callback;
 import javax.security.auth.Subject;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/UnauthenticatedSecurityContext_NullPrincipalOrName.java b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/UnauthenticatedSecurityContext_NullPrincipalOrName.java
index b7e770a..297de3f 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/UnauthenticatedSecurityContext_NullPrincipalOrName.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/UnauthenticatedSecurityContext_NullPrincipalOrName.java
@@ -18,7 +18,7 @@
 
 import org.glassfish.security.common.PrincipalImpl;
 
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.Callback;
 import javax.security.auth.Subject;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/UnsupportedWorkContext.java b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/UnsupportedWorkContext.java
index a2e715e..c6dcb31 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/UnsupportedWorkContext.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/UnsupportedWorkContext.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.WorkContext;
+import jakarta.resource.spi.work.WorkContext;
 
 public class UnsupportedWorkContext implements WorkContext {
     public String getName() {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/WorkDispatcher.java
index 3fd888c..d800f61 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/app-scoped-resources-ms4-demo/ra/src/connector/WorkDispatcher.java
@@ -20,12 +20,12 @@
 import org.glassfish.security.common.PrincipalImpl;
 
 import java.lang.reflect.Method;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.work.*;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.work.*;
 import javax.transaction.xa.Xid;
 
 /**
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/DeliveryWork.java
index 63076d3..658233e 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/DeliveryWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/MyAdminObject.java b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/MyAdminObject.java
index 54ff692..b785d22 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/MyAdminObject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/MyAdminObject.java
@@ -18,8 +18,8 @@
 
 import jakarta.validation.constraints.*;
 import jakarta.validation.*;
-import javax.resource.spi.*;
-import javax.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.ResourceException;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
 import java.util.Set;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/MyAdminObject1.java b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/MyAdminObject1.java
index 5d1d055..92cae81 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/MyAdminObject1.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/MyAdminObject1.java
@@ -17,7 +17,7 @@
 package connector;
 
 import jakarta.validation.constraints.*;
-import javax.resource.spi.*;
+import jakarta.resource.spi.*;
 
 public class MyAdminObject1 implements java.io.Serializable {
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/SimpleActivationSpec.java
index f5b7122..8f2df2f 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/SimpleActivationSpec.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
 import jakarta.validation.constraints.*;
 
 /**
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/SimpleResourceAdapterImpl.java
index 5a8214f..03f5828 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -21,21 +21,21 @@
 import java.util.Iterator;
 import java.util.Properties;
 import javax.naming.*;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.*;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 import jakarta.validation.constraints.*;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/WorkDispatcher.java
index fb6799d..6e05b53 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple-resources-xml/ra/src/connector/WorkDispatcher.java
@@ -18,15 +18,15 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 import javax.transaction.xa.Xid;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/DeliveryWork.java
index 63076d3..658233e 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/DeliveryWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/MyAdminObject.java b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/MyAdminObject.java
index 54ff692..b785d22 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/MyAdminObject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/MyAdminObject.java
@@ -18,8 +18,8 @@
 
 import jakarta.validation.constraints.*;
 import jakarta.validation.*;
-import javax.resource.spi.*;
-import javax.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.ResourceException;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
 import java.util.Set;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/MyAdminObject1.java b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/MyAdminObject1.java
index 5d1d055..92cae81 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/MyAdminObject1.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/MyAdminObject1.java
@@ -17,7 +17,7 @@
 package connector;
 
 import jakarta.validation.constraints.*;
-import javax.resource.spi.*;
+import jakarta.resource.spi.*;
 
 public class MyAdminObject1 implements java.io.Serializable {
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/SimpleActivationSpec.java
index f5b7122..8f2df2f 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/SimpleActivationSpec.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
 import jakarta.validation.constraints.*;
 
 /**
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/SimpleResourceAdapterImpl.java
index 5a8214f..03f5828 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -21,21 +21,21 @@
 import java.util.Iterator;
 import java.util.Properties;
 import javax.naming.*;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.*;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 import jakarta.validation.constraints.*;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/WorkDispatcher.java
index fb6799d..6e05b53 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/beanvalidation-simple/ra/src/connector/WorkDispatcher.java
@@ -18,15 +18,15 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 import javax.transaction.xa.Xid;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/descriptor/blackbox-notx.xml b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/descriptor/blackbox-notx.xml
index 56907d2..6fd1bf5 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/descriptor/blackbox-notx.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/descriptor/blackbox-notx.xml
@@ -81,7 +81,7 @@
         </config-property>
         <authentication-mechanism>
             <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-            <credential-interface>javax.resource.security.PasswordCredential</credential-interface>
+            <credential-interface>jakarta.resource.security.PasswordCredential</credential-interface>
         </authentication-mechanism>
         <reauthentication-support>false</reauthentication-support>
     </resourceadapter>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/descriptor/blackbox-tx.xml b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/descriptor/blackbox-tx.xml
index 9e8ec8e..44d53da 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/descriptor/blackbox-tx.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/descriptor/blackbox-tx.xml
@@ -111,7 +111,7 @@
 
             <authentication-mechanism>
                 <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-                <credential-interface>javax.resource.spi.security.PasswordCredential</credential-interface>
+                <credential-interface>jakarta.resource.spi.security.PasswordCredential</credential-interface>
             </authentication-mechanism>
             <reauthentication-support>false</reauthentication-support>
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/descriptor/blackbox-xa.xml b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/descriptor/blackbox-xa.xml
index c47dcd7..5e3f65f 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/descriptor/blackbox-xa.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/descriptor/blackbox-xa.xml
@@ -81,7 +81,7 @@
         </config-property>
         <authentication-mechanism>
             <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-            <credential-interface>javax.resource.security.PasswordCredential</credential-interface>
+            <credential-interface>jakarta.resource.security.PasswordCredential</credential-interface>
         </authentication-mechanism>
         <reauthentication-support>false</reauthentication-support>
     </resourceadapter>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcConnection.java b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcConnection.java
index bd2eeb4..fa64959 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcConnection.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionEvent;
-import javax.resource.spi.IllegalStateException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionEvent;
+import jakarta.resource.spi.IllegalStateException;
 import java.sql.*;
 import java.util.Map;
 import java.util.Properties;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcConnectionEventListener.java b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcConnectionEventListener.java
index b3afdf6..7474a1c 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcConnectionEventListener.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcConnectionEventListener.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.spi.ConnectionEvent;
-import javax.resource.spi.ConnectionEventListener;
-import javax.resource.spi.ManagedConnection;
+import jakarta.resource.spi.ConnectionEvent;
+import jakarta.resource.spi.ConnectionEventListener;
+import jakarta.resource.spi.ManagedConnection;
 import java.util.Vector;
 
 /**
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcConnectionManager.java b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcConnectionManager.java
index 93959af..4932036 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcConnectionManager.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcConnectionManager.java
@@ -16,11 +16,11 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.spi.ManagedConnectionFactory;
 import java.io.Serializable;
 
 /**
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcConnectionRequestInfo.java b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcConnectionRequestInfo.java
index 56eda59..d5244e9 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcConnectionRequestInfo.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcConnectionRequestInfo.java
@@ -16,7 +16,7 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ConnectionRequestInfo;
 
 /**
  * @author Tony Ng
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcDataSource.java b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcDataSource.java
index 8b873fe..b70e746 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcDataSource.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcDataSource.java
@@ -17,11 +17,11 @@
 package com.sun.connector.blackbox;
 
 import javax.naming.Reference;
-import javax.resource.Referenceable;
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.Referenceable;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
 import java.io.PrintWriter;
 import java.io.Serializable;
 import java.sql.Connection;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcManagedConnection.java b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcManagedConnection.java
index f62b897..8016d1d 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcManagedConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcManagedConnection.java
@@ -16,12 +16,12 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
-import javax.resource.spi.IllegalStateException;
-import javax.resource.spi.SecurityException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.IllegalStateException;
+import jakarta.resource.spi.SecurityException;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import javax.sql.XAConnection;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcManagedConnectionFactory.java
index 93336e6..2f6b397 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/JdbcManagedConnectionFactory.java
@@ -20,9 +20,9 @@
 
 import javax.naming.Context;
 import javax.naming.InitialContext;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import javax.sql.XAConnection;
 import javax.sql.XADataSource;
@@ -109,7 +109,7 @@
                 _logger.severe("@@@@@@ Sending ResourceErrorOccured event");
                 count = 0;
                 ((JdbcManagedConnection) obj).sendEvent(
-                        javax.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
+                        jakarta.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
                         null);
             }
             if (obj instanceof JdbcManagedConnection) {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/LocalTransactionImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/LocalTransactionImpl.java
index f59bbb2..959d4be 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/LocalTransactionImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/LocalTransactionImpl.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.EISSystemException;
-import javax.resource.spi.LocalTransaction;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.EISSystemException;
+import jakarta.resource.spi.LocalTransaction;
 import java.sql.Connection;
 import java.sql.SQLException;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/LocalTxManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/LocalTxManagedConnectionFactory.java
index 75bf313..0e47ddc 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/LocalTxManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/LocalTxManagedConnectionFactory.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import java.io.PrintWriter;
 import java.io.Serializable;
@@ -139,7 +139,7 @@
                      System.out.println(" Sending ConnectionErrorOccured");
                  //count = 0;
                          mc.sendEvent(
-                     javax.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
+                     jakarta.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
                      null);
                  return null;
                      }
@@ -167,7 +167,7 @@
             System.out.println(" Sending ConnectionErrorOccured");
             //count = 0;
             mc.sendEvent(
-                    javax.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
+                    jakarta.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
                     null);
             conn = new HashSet();
             conn.add(mc);
@@ -228,7 +228,7 @@
         return this.ra;
     }
 
-    public void setResourceAdapter(javax.resource.spi.ResourceAdapter resourceAdapter) throws ResourceException {
+    public void setResourceAdapter(jakarta.resource.spi.ResourceAdapter resourceAdapter) throws ResourceException {
         this.ra = (ResourceAdapter)resourceAdapter;
     }
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/MetaDataImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/MetaDataImpl.java
index 5726b12..3c39009 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/MetaDataImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/MetaDataImpl.java
@@ -16,10 +16,10 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.EISSystemException;
-import javax.resource.spi.IllegalStateException;
-import javax.resource.spi.ManagedConnectionMetaData;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.EISSystemException;
+import jakarta.resource.spi.IllegalStateException;
+import jakarta.resource.spi.ManagedConnectionMetaData;
 import java.sql.Connection;
 import java.sql.SQLException;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/NoTxManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/NoTxManagedConnectionFactory.java
index a9d2061..1bd38dd 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/NoTxManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/NoTxManagedConnectionFactory.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import java.io.PrintWriter;
 import java.io.Serializable;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/ResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/ResourceAdapter.java
index c58ca33..8f2f354 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/ResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/ResourceAdapter.java
@@ -16,15 +16,15 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.ResourceException;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.ResourceException;
 import javax.transaction.xa.XAResource;
 import java.io.Serializable;
 
-public class ResourceAdapter implements javax.resource.spi.ResourceAdapter, Serializable {
+public class ResourceAdapter implements jakarta.resource.spi.ResourceAdapter, Serializable {
 
     private BootstrapContext context;
     public void start(BootstrapContext bootstrapContext) throws ResourceAdapterInternalException {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/Util.java b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/Util.java
index 26f9da1..ec22fef 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/Util.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/config-property-accessor-test/rar/src/com/sun/connector/blackbox/Util.java
@@ -16,11 +16,11 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.SecurityException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.SecurityException;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/descriptor/application.xml b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/descriptor/application.xml
index 540ba0c..98ffd68 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/descriptor/application.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/descriptor/application.xml
@@ -40,7 +40,7 @@
     <connection-factory>
        <description>global-scope resource defined in application DD</description>
        <name>java:global/env/EAR_ConnectionFactory</name>
-       <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+       <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
        <resource-adapter>#cfd-ra</resource-adapter>
        <max-pool-size>16</max-pool-size>
        <min-pool-size>4</min-pool-size>
@@ -54,7 +54,7 @@
     <connection-factory>
        <description>application-scope resource defined in application DD</description>
        <name>java:app/env/EAR_ConnectionFactory</name>
-       <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+       <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
        <resource-adapter>#cfd-ra</resource-adapter>
        <max-pool-size>16</max-pool-size>
        <min-pool-size>4</min-pool-size>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/descriptor/connector-resource.xml b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/descriptor/connector-resource.xml
index 694393a..144abd8 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/descriptor/connector-resource.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/descriptor/connector-resource.xml
@@ -22,7 +22,7 @@
              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/javaee_7.xsd>
 	<description>global-scope resource defined in application DD</description>
 	<name>java:global/env/Application_Level_ConnectionFactory</name>
-	<interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+	<interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
 	<resource-adapter>cfd-ra</resource-adapter>
 	<property>
 		<name>transactionSupport</name>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/descriptor/ejb-jar.xml b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/descriptor/ejb-jar.xml
index ef20673..c9146bc 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/descriptor/ejb-jar.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/descriptor/ejb-jar.xml
@@ -33,7 +33,7 @@
       <connection-factory>
         <description>global-scope resource to be modified by DD</description>
         <name>java:global/env/HelloStatefulEJB_ModByDD_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>#cfd-ra</resource-adapter>
         <property>
           <name>testName</name>
@@ -44,7 +44,7 @@
       <connection-factory>
         <description>global-scope resource defined in EJB DD</description>
         <name>java:global/env/HelloStatefulEJB_DD_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>#cfd-ra</resource-adapter>
         <max-pool-size>16</max-pool-size>
         <min-pool-size>4</min-pool-size>
@@ -58,7 +58,7 @@
       <connection-factory>
         <description>module-scope resource defined in EJB DD</description>
         <name>java:module/env/HelloStatefulEJB_DD_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>#cfd-ra</resource-adapter>
         <property>
           <name>testName</name>
@@ -69,7 +69,7 @@
       <connection-factory>
         <description>application-scope resource defined in EJB DD</description>
         <name>java:app/env/HelloStatefulEJB_DD_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>#cfd-ra</resource-adapter>
         <max-pool-size>16</max-pool-size>
         <min-pool-size>4</min-pool-size>
@@ -83,7 +83,7 @@
       <connection-factory>
         <description>component-scope resource defined in EJB DD</description>
         <name>java:comp/env/HelloStatefulEJB_DD_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>#cfd-ra</resource-adapter>
         <property>
           <name>testName</name>
@@ -101,7 +101,7 @@
       <connection-factory>
         <description>global-scope resource to be modified by DD</description>
         <name>java:global/env/HelloEJB_ModByDD_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>#cfd-ra</resource-adapter>
         <property>
           <name>testName</name>
@@ -112,7 +112,7 @@
       <connection-factory>
         <description>global-scope resource defined in EJB DD</description>
         <name>java:global/env/HelloEJB_DD_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>#cfd-ra</resource-adapter>
         <max-pool-size>16</max-pool-size>
         <min-pool-size>4</min-pool-size>
@@ -126,7 +126,7 @@
       <connection-factory>
         <description>application-scope resource defined in EJB DD</description>
         <name>java:app/env/HelloEJB_DD_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>#cfd-ra</resource-adapter>
         <max-pool-size>16</max-pool-size>
         <min-pool-size>4</min-pool-size>
@@ -140,7 +140,7 @@
       <connection-factory>
         <description>module-scope resource defined in EJB DD</description>
         <name>java:module/env/HelloEJB_DD_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>#cfd-ra</resource-adapter>
         <property>
           <name>testName</name>
@@ -151,7 +151,7 @@
       <connection-factory>
         <description>component-scope resource defined in EJB DD</description>
         <name>java:comp/env/HelloEJB_DD_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>#cfd-ra</resource-adapter>
         <property>
           <name>testName</name>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/descriptor/web.xml b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/descriptor/web.xml
index 2a03424..4251cf0 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/descriptor/web.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/descriptor/web.xml
@@ -38,7 +38,7 @@
     <connection-factory>
        <description>global-scope resource to be modified by DD</description>
        <name>java:global/env/Servlet_ModByDD_ConnectionFactory</name>
-       <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+       <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
        <resource-adapter>#cfd-ra</resource-adapter>
        <property>
          <name>testName</name>
@@ -49,7 +49,7 @@
     <connection-factory>
        <description>global-scope resource defined in Web DD</description>
        <name>java:global/env/Web_DD_ConnectionFactory</name>
-       <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+       <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
        <resource-adapter>#cfd-ra</resource-adapter>
        <max-pool-size>16</max-pool-size>
        <min-pool-size>4</min-pool-size>
@@ -63,7 +63,7 @@
     <connection-factory>
        <description>application-scope resource defined in Web DD</description>
        <name>java:app/env/Web_DD_ConnectionFactory</name>
-       <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+       <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
        <resource-adapter>#cfd-ra</resource-adapter>
        <max-pool-size>16</max-pool-size>
        <min-pool-size>4</min-pool-size>
@@ -77,7 +77,7 @@
      <connection-factory>
        <description>module-scope resource defined in Web DD</description>
        <name>java:module/env/Web_DD_ConnectionFactory</name>
-       <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+       <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
        <resource-adapter>#cfd-ra</resource-adapter>
        <property>
          <name>testName</name>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ejb/HelloEJB.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ejb/HelloEJB.java
index 28d40a8..da9317f 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ejb/HelloEJB.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ejb/HelloEJB.java
@@ -19,11 +19,11 @@
 import jakarta.ejb.Stateless;
 
 import javax.naming.InitialContext;
-import javax.resource.ConnectionFactoryDefinitions;
-import javax.resource.ConnectionFactoryDefinition;
-import javax.resource.cci.Connection;
-import javax.resource.cci.ConnectionFactory;
-import javax.resource.spi.TransactionSupport.TransactionSupportLevel;
+import jakarta.resource.ConnectionFactoryDefinitions;
+import jakarta.resource.ConnectionFactoryDefinition;
+import jakarta.resource.cci.Connection;
+import jakarta.resource.cci.ConnectionFactory;
+import jakarta.resource.spi.TransactionSupport.TransactionSupportLevel;
 import jakarta.annotation.Resource;
 
 @ConnectionFactoryDefinitions(
@@ -31,14 +31,14 @@
           @ConnectionFactoryDefinition(
                 description="global-scope resource defined by @ConnectionFactoryDefinition",
                 name = "java:global/env/HelloEJB_ModByDD_ConnectionFactory",
-                interfaceName = "javax.resource.cci.ConnectionFactory",
+                interfaceName = "jakarta.resource.cci.ConnectionFactory",
                 resourceAdapter = "#cfd-ra",
                 properties = {"testName=foo"}
           ),
           @ConnectionFactoryDefinition(
                description = "global-scope resource defined by @ConnectionFactoryDefinition", 
                name = "java:global/env/HelloEJB_Annotation_ConnectionFactory", 
-               interfaceName = "javax.resource.cci.ConnectionFactory", 
+               interfaceName = "jakarta.resource.cci.ConnectionFactory", 
                resourceAdapter = "#cfd-ra",
                transactionSupport = TransactionSupportLevel.LocalTransaction,
                maxPoolSize = 16,
@@ -49,7 +49,7 @@
           @ConnectionFactoryDefinition(
                description = "application-scope resource defined by @ConnectionFactoryDefinition", 
                name = "java:app/env/HelloEJB_Annotation_ConnectionFactory", 
-               interfaceName = "javax.resource.cci.ConnectionFactory", 
+               interfaceName = "jakarta.resource.cci.ConnectionFactory", 
                transactionSupport = TransactionSupportLevel.XATransaction,
                maxPoolSize = 16,
                minPoolSize = 4,
@@ -60,7 +60,7 @@
           @ConnectionFactoryDefinition(
                description = "module-scope resource defined by @ConnectionFactoryDefinition", 
                name = "java:module/env/HelloEJB_Annotation_ConnectionFactory", 
-               interfaceName = "javax.resource.cci.ConnectionFactory", 
+               interfaceName = "jakarta.resource.cci.ConnectionFactory", 
                resourceAdapter = "#cfd-ra",
                properties = {"testName=foo"}
           ),
@@ -68,7 +68,7 @@
           @ConnectionFactoryDefinition(
                description = "component-scope resource defined by @ConnectionFactoryDefinition", 
                name = "java:comp/env/HelloEJB_Annotation_ConnectionFactory", 
-               interfaceName = "javax.resource.cci.ConnectionFactory", 
+               interfaceName = "jakarta.resource.cci.ConnectionFactory", 
                resourceAdapter = "#cfd-ra",
                properties = {"testName=foo"}
           )
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ejb/HelloStatefulEJB.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ejb/HelloStatefulEJB.java
index 7dc137e..f2e7400 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ejb/HelloStatefulEJB.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ejb/HelloStatefulEJB.java
@@ -18,11 +18,11 @@
 
 import jakarta.ejb.Stateful;
 import jakarta.annotation.PostConstruct;
-import javax.resource.ConnectionFactoryDefinitions;
-import javax.resource.ConnectionFactoryDefinition;
-import javax.resource.cci.Connection;
-import javax.resource.cci.ConnectionFactory;
-import javax.resource.spi.TransactionSupport.TransactionSupportLevel;
+import jakarta.resource.ConnectionFactoryDefinitions;
+import jakarta.resource.ConnectionFactoryDefinition;
+import jakarta.resource.cci.Connection;
+import jakarta.resource.cci.ConnectionFactory;
+import jakarta.resource.spi.TransactionSupport.TransactionSupportLevel;
 
 import javax.naming.*;
 
@@ -31,7 +31,7 @@
                 @ConnectionFactoryDefinition(
                         description="global-scope resource defined by @ConnectionFactoryDefinition",
                         name = "java:global/env/HelloStatefulEJB_ModByDD_ConnectionFactory",
-                        interfaceName = "javax.resource.cci.ConnectionFactory",
+                        interfaceName = "jakarta.resource.cci.ConnectionFactory",
                         resourceAdapter = "#cfd-ra",
                         properties = {"testName=foo"}
                 ),
@@ -39,7 +39,7 @@
                 @ConnectionFactoryDefinition(
                         description="global-scope resource defined by @ConnectionFactoryDefinition",
                         name = "java:global/env/HelloStatefulEJB_Annotation_ConnectionFactory",
-                        interfaceName = "javax.resource.cci.ConnectionFactory",
+                        interfaceName = "jakarta.resource.cci.ConnectionFactory",
                         resourceAdapter = "#cfd-ra",
                         transactionSupport = TransactionSupportLevel.LocalTransaction,
                         maxPoolSize = 16,
@@ -50,7 +50,7 @@
                 @ConnectionFactoryDefinition(
                         description="application-scope resource defined by @ConnectionFactoryDefinition",
                         name = "java:app/env/HelloStatefulEJB_Annotation_ConnectionFactory",
-                        interfaceName = "javax.resource.cci.ConnectionFactory",
+                        interfaceName = "jakarta.resource.cci.ConnectionFactory",
                         resourceAdapter = "#cfd-ra",
                         transactionSupport = TransactionSupportLevel.XATransaction,
                         maxPoolSize = 16,
@@ -61,7 +61,7 @@
                 @ConnectionFactoryDefinition(
                         description="module-scope resource defined by @ConnectionFactoryDefinition",
                         name = "java:module/env/HelloStatefulEJB_Annotation_ConnectionFactory",
-                        interfaceName = "javax.resource.cci.ConnectionFactory",
+                        interfaceName = "jakarta.resource.cci.ConnectionFactory",
                         resourceAdapter = "#cfd-ra",
                         properties = {"testName=foo"}
                 ),
@@ -69,7 +69,7 @@
                 @ConnectionFactoryDefinition(
                         description="component-scope resource defined by @ConnectionFactoryDefinition",
                         name = "java:comp/env/HelloStatefulEJB_Annotation_ConnectionFactory",
-                        interfaceName = "javax.resource.cci.ConnectionFactory",
+                        interfaceName = "jakarta.resource.cci.ConnectionFactory",
                         resourceAdapter = "#cfd-ra",
                         properties = {"testName=foo"}
                 )
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/AbstractAdminObject.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/AbstractAdminObject.java
index ff4d599..f532aec 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/AbstractAdminObject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/AbstractAdminObject.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.*;
+import jakarta.resource.spi.*;
 
 public abstract class AbstractAdminObject {
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/AbstractResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/AbstractResourceAdapter.java
index a337cb0..07b9d78 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/AbstractResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/AbstractResourceAdapter.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.*;
+import jakarta.resource.spi.*;
 
 public abstract class AbstractResourceAdapter{
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/DeliveryWork.java
index 3cf8b01..0034465 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/DeliveryWork.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.work.Work;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.work.Work;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/MyAdminObject.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/MyAdminObject.java
index d57c4d6..ba2e765 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/MyAdminObject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/MyAdminObject.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.AdministeredObject;
-import javax.resource.spi.ConfigProperty;
+import jakarta.resource.spi.AdministeredObject;
+import jakarta.resource.spi.ConfigProperty;
 
 @AdministeredObject(
         adminObjectInterfaces = {connector.MyAdminObject.class}
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/MyConnection.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/MyConnection.java
index e30a6e3..342b29c 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/MyConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/MyConnection.java
@@ -16,12 +16,12 @@
 
 package connector;
 
-import javax.resource.ResourceException;
-import javax.resource.cci.Connection;
-import javax.resource.cci.ConnectionMetaData;
-import javax.resource.cci.Interaction;
-import javax.resource.cci.LocalTransaction;
-import javax.resource.cci.ResultSetInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.cci.Connection;
+import jakarta.resource.cci.ConnectionMetaData;
+import jakarta.resource.cci.Interaction;
+import jakarta.resource.cci.LocalTransaction;
+import jakarta.resource.cci.ResultSetInfo;
 
 public class MyConnection implements Connection {
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/MyConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/MyConnectionFactory.java
index a613d69..9f24648 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/MyConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/MyConnectionFactory.java
@@ -18,13 +18,13 @@
 
 import javax.naming.NamingException;
 import javax.naming.Reference;
-import javax.resource.ResourceException;
-import javax.resource.cci.Connection;
-import javax.resource.cci.ConnectionFactory;
-import javax.resource.cci.ConnectionSpec;
-import javax.resource.cci.RecordFactory;
-import javax.resource.cci.ResourceAdapterMetaData;
-import javax.resource.spi.ConnectionManager;
+import jakarta.resource.ResourceException;
+import jakarta.resource.cci.Connection;
+import jakarta.resource.cci.ConnectionFactory;
+import jakarta.resource.cci.ConnectionSpec;
+import jakarta.resource.cci.RecordFactory;
+import jakarta.resource.cci.ResourceAdapterMetaData;
+import jakarta.resource.spi.ConnectionManager;
 
 public class MyConnectionFactory implements ConnectionFactory {
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/MyManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/MyManagedConnectionFactory.java
index 0592991..f34e83b 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/MyManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/MyManagedConnectionFactory.java
@@ -19,16 +19,16 @@
 import java.io.PrintWriter;
 import java.util.Set;
 
-import javax.resource.ResourceException;
-import javax.resource.cci.Connection;
-import javax.resource.cci.ConnectionFactory;
-import javax.resource.spi.ConfigProperty;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ConnectionDefinition;
-import javax.resource.spi.TransactionSupport;
+import jakarta.resource.ResourceException;
+import jakarta.resource.cci.Connection;
+import jakarta.resource.cci.ConnectionFactory;
+import jakarta.resource.spi.ConfigProperty;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ConnectionDefinition;
+import jakarta.resource.spi.TransactionSupport;
 import javax.security.auth.Subject;
 
 @ConnectionDefinition(
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/MyWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/MyWork.java
index 99280ef..614381e 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/MyWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/MyWork.java
@@ -17,9 +17,9 @@
 package connector;
 
 import java.lang.reflect.Method;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/SimpleActivationSpec.java
index fd84475..512e5c6 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/SimpleActivationSpec.java
@@ -16,9 +16,9 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.Activation;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.Activation;
 
 /**
  * This class is supposed to implemented as a JavaBean
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/SimpleResourceAdapterImpl.java
index 7cce61a..25611ed 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -17,14 +17,14 @@
 package connector;
 
 import java.util.*;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.TransactionSupport.TransactionSupportLevel;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.*;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.TransactionSupport.TransactionSupportLevel;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 
 /**
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/TestWMWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/TestWMWork.java
index c2f521c..ee0fae9 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/TestWMWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/TestWMWork.java
@@ -16,10 +16,10 @@
 
 package connector;
 
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.WorkException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.WorkException;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/V3WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/V3WorkDispatcher.java
index 53fdc10..8adf3cc 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/V3WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/V3WorkDispatcher.java
@@ -16,11 +16,11 @@
 
 package connector;
 
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
 
 public class V3WorkDispatcher extends WorkDispatcher {
     public V3WorkDispatcher(String id, BootstrapContext ctx, MessageEndpointFactory factory, ActivationSpec spec) {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/WorkDispatcher.java
index 3a27195..42249dc 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/ra/src/connector/WorkDispatcher.java
@@ -17,15 +17,15 @@
 package connector;
 
 import java.lang.reflect.Method;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 import javax.transaction.xa.Xid;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/servlet/Servlet.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/servlet/Servlet.java
index 4069f24..5ab2503 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/servlet/Servlet.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition-embedra/servlet/Servlet.java
@@ -18,11 +18,11 @@
 
 import java.io.*;
 
-import javax.resource.ConnectionFactoryDefinitions;
-import javax.resource.ConnectionFactoryDefinition;
-import javax.resource.cci.Connection;
-import javax.resource.cci.ConnectionFactory;
-import javax.resource.spi.TransactionSupport.TransactionSupportLevel;
+import jakarta.resource.ConnectionFactoryDefinitions;
+import jakarta.resource.ConnectionFactoryDefinition;
+import jakarta.resource.cci.Connection;
+import jakarta.resource.cci.ConnectionFactory;
+import jakarta.resource.spi.TransactionSupport.TransactionSupportLevel;
 import javax.servlet.*;
 import javax.servlet.http.*;
 import javax.servlet.annotation.*;
@@ -44,7 +44,7 @@
                 @ConnectionFactoryDefinition(
                         description="global-scope resource defined by @ConnectionFactoryDefinition",
                         name = "java:global/env/Servlet_ModByDD_ConnectionFactory",
-                        interfaceName = "javax.resource.cci.ConnectionFactory",
+                        interfaceName = "jakarta.resource.cci.ConnectionFactory",
                         resourceAdapter = "#cfd-ra",
                         properties = {"testName=foo"}
                 ),
@@ -52,7 +52,7 @@
                 @ConnectionFactoryDefinition(
                         description="global-scope resource defined by @ConnectionFactoryDefinition",
                         name = "java:global/env/Servlet_ConnectionFactory",
-                        interfaceName = "javax.resource.cci.ConnectionFactory",
+                        interfaceName = "jakarta.resource.cci.ConnectionFactory",
                         resourceAdapter = "#cfd-ra",
                         transactionSupport = TransactionSupportLevel.LocalTransaction,
                         maxPoolSize = 16,
@@ -63,7 +63,7 @@
                 @ConnectionFactoryDefinition(
                         description="application-scope resource defined by @ConnectionFactoryDefinition",
                         name = "java:app/env/Servlet_ConnectionFactory",
-                        interfaceName = "javax.resource.cci.ConnectionFactory",
+                        interfaceName = "jakarta.resource.cci.ConnectionFactory",
                         resourceAdapter = "#cfd-ra",
                         transactionSupport = TransactionSupportLevel.XATransaction,
                         maxPoolSize = 16,
@@ -74,7 +74,7 @@
                 @ConnectionFactoryDefinition(
                         description="module-scope resource defined by @ConnectionFactoryDefinition",
                         name = "java:module/env/Servlet_ConnectionFactory",
-                        interfaceName = "javax.resource.cci.ConnectionFactory",
+                        interfaceName = "jakarta.resource.cci.ConnectionFactory",
                         resourceAdapter = "#cfd-ra",
                         properties = {"testName=foo"}
                 ),
@@ -82,7 +82,7 @@
                 @ConnectionFactoryDefinition(
                         description="component-scope resource defined by @ConnectionFactoryDefinition",
                         name = "java:comp/env/Servlet_ConnectionFactory",
-                        interfaceName = "javax.resource.cci.ConnectionFactory",
+                        interfaceName = "jakarta.resource.cci.ConnectionFactory",
                         resourceAdapter = "#cfd-ra",
                         properties = {"testName=foo"}
                 )
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/application.xml b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/application.xml
index 6c1b5d1..3396d42 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/application.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/application.xml
@@ -36,7 +36,7 @@
     <connection-factory>
        <description>global-scope resource defined in application DD</description>
        <name>java:global/env/EAR_ConnectionFactory</name>
-       <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+       <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
        <resource-adapter>cfd-ra</resource-adapter>
        <max-pool-size>16</max-pool-size>
        <min-pool-size>4</min-pool-size>
@@ -50,7 +50,7 @@
     <connection-factory>
        <description>application-scope resource defined in application DD</description>
        <name>java:app/env/EAR_ConnectionFactory</name>
-       <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+       <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
        <resource-adapter>cfd-ra</resource-adapter>
        <max-pool-size>16</max-pool-size>
        <min-pool-size>4</min-pool-size>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/connector-resource.xml b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/connector-resource.xml
index 694393a..144abd8 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/connector-resource.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/connector-resource.xml
@@ -22,7 +22,7 @@
              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/javaee_7.xsd>
 	<description>global-scope resource defined in application DD</description>
 	<name>java:global/env/Application_Level_ConnectionFactory</name>
-	<interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+	<interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
 	<resource-adapter>cfd-ra</resource-adapter>
 	<property>
 		<name>transactionSupport</name>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ejb-jar.xml b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ejb-jar.xml
index 7d5de0e..8593de6 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ejb-jar.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ejb-jar.xml
@@ -33,7 +33,7 @@
       <connection-factory>
         <description>global-scope resource to be modified by DD</description>
         <name>java:global/env/HelloStatefulEJB_ModByDD_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>cfd-ra</resource-adapter>
         <property>
           <name>testName</name>
@@ -44,7 +44,7 @@
       <connection-factory>
         <description>global-scope resource defined in EJB DD</description>
         <name>java:global/env/HelloStatefulEJB_DD_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>cfd-ra</resource-adapter>
         <max-pool-size>16</max-pool-size>
         <min-pool-size>4</min-pool-size>
@@ -58,7 +58,7 @@
       <connection-factory>
         <description>module-scope resource defined in EJB DD</description>
         <name>java:module/env/HelloStatefulEJB_DD_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>cfd-ra</resource-adapter>
         <property>
           <name>testName</name>
@@ -69,7 +69,7 @@
       <connection-factory>
         <description>application-scope resource defined in EJB DD</description>
         <name>java:app/env/HelloStatefulEJB_DD_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>cfd-ra</resource-adapter>
         <max-pool-size>16</max-pool-size>
         <min-pool-size>4</min-pool-size>
@@ -83,7 +83,7 @@
       <connection-factory>
         <description>component-scope resource defined in EJB DD</description>
         <name>java:comp/env/HelloStatefulEJB_DD_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>cfd-ra</resource-adapter>
         <property>
           <name>testName</name>
@@ -101,7 +101,7 @@
       <connection-factory>
         <description>global-scope resource to be modified by DD</description>
         <name>java:global/env/HelloEJB_ModByDD_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>cfd-ra</resource-adapter>
         <property>
           <name>testName</name>
@@ -112,7 +112,7 @@
       <connection-factory>
         <description>global-scope resource defined in EJB DD</description>
         <name>java:global/env/HelloEJB_DD_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>cfd-ra</resource-adapter>
         <max-pool-size>16</max-pool-size>
         <min-pool-size>4</min-pool-size>
@@ -126,7 +126,7 @@
       <connection-factory>
         <description>application-scope resource defined in EJB DD</description>
         <name>java:app/env/HelloEJB_DD_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>cfd-ra</resource-adapter>
         <max-pool-size>16</max-pool-size>
         <min-pool-size>4</min-pool-size>
@@ -140,7 +140,7 @@
       <connection-factory>
         <description>module-scope resource defined in EJB DD</description>
         <name>java:module/env/HelloEJB_DD_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>cfd-ra</resource-adapter>
         <property>
           <name>testName</name>
@@ -151,7 +151,7 @@
       <connection-factory>
         <description>component-scope resource defined in EJB DD</description>
         <name>java:comp/env/HelloEJB_DD_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>cfd-ra</resource-adapter>
         <property>
           <name>testName</name>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-application.xml b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-application.xml
index 6da7070..d6e8115 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-application.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-application.xml
@@ -28,7 +28,7 @@
     <connection-factory>
        <description>global-scope resource defined in application DD</description>
        <name>java:global/env/ConnectionFactory</name>
-       <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+       <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
        <resource-adapter>RaApplicationName</resource-adapter>
        <max-pool-size>16</max-pool-size>
        <min-pool-size>4</min-pool-size>
@@ -42,7 +42,7 @@
     <connection-factory>
        <description>application-scope resource defined in application DD</description>
        <name>java:app/env/ConnectionFactory</name>
-       <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+       <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
        <resource-adapter>RaApplicationName</resource-adapter>
        <property>
          <name>testName</name>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-entity-ejb-jar.xml b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-entity-ejb-jar.xml
index 256a181..bc60ed7 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-entity-ejb-jar.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-entity-ejb-jar.xml
@@ -33,7 +33,7 @@
       <connection-factory>
         <description>global-scope resource defined in EJB DD</description>
         <name>java:global/env/Entity_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>RaApplicationName</resource-adapter>
         <max-pool-size>16</max-pool-size>
         <min-pool-size>4</min-pool-size>
@@ -47,7 +47,7 @@
       <connection-factory>
         <description>module-scope resource defined in EJB DD</description>
         <name>java:module/env/Entity_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>RaApplicationName</resource-adapter>
         <max-pool-size>16</max-pool-size>
         <min-pool-size>4</min-pool-size>
@@ -61,7 +61,7 @@
       <connection-factory>
         <description>component-scope resource defined in EJB DD</description>
         <name>java:comp/env/Entity_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>RaApplicationName</resource-adapter>
         <property>
           <name>testName</name>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-interceptor-ejb-jar.xml b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-interceptor-ejb-jar.xml
index d7cff84..b12b3e4 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-interceptor-ejb-jar.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-interceptor-ejb-jar.xml
@@ -29,7 +29,7 @@
       <connection-factory>
         <description>global-scope resource defined in EJB DD</description>
         <name>java:global/env/Interceptor_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>RaApplicationName</resource-adapter>
         <max-pool-size>16</max-pool-size>
         <min-pool-size>4</min-pool-size>
@@ -43,7 +43,7 @@
       <connection-factory>
         <description>module-scope resource defined in EJB DD</description>
         <name>java:module/env/Interceptor_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>RaApplicationName</resource-adapter>
         <max-pool-size>16</max-pool-size>
         <min-pool-size>4</min-pool-size>
@@ -57,7 +57,7 @@
       <connection-factory>
         <description>component-scope resource defined in EJB DD</description>
         <name>java:comp/env/Interceptor_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>RaApplicationName</resource-adapter>
         <property>
           <name>testName</name>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-mdb-ejb-jar.xml b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-mdb-ejb-jar.xml
index 1866fa2..cc66851 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-mdb-ejb-jar.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-mdb-ejb-jar.xml
@@ -32,7 +32,7 @@
       <connection-factory>
         <description>global-scope resource defined in EJB DD</description>
         <name>java:global/env/MDB_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>RaApplicationName</resource-adapter>
         <max-pool-size>16</max-pool-size>
         <min-pool-size>4</min-pool-size>
@@ -46,7 +46,7 @@
       <connection-factory>
         <description>module-scope resource defined in EJB DD</description>
         <name>java:module/env/MDB_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>RaApplicationName</resource-adapter>
         <max-pool-size>16</max-pool-size>
         <min-pool-size>4</min-pool-size>
@@ -60,7 +60,7 @@
       <connection-factory>
         <description>component-scope resource defined in EJB DD</description>
         <name>java:comp/env/MDB_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>RaApplicationName</resource-adapter>
         <property>
           <name>testName</name>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-session-ejb-jar.xml b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-session-ejb-jar.xml
index d96c40c..865ef3a 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-session-ejb-jar.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-session-ejb-jar.xml
@@ -32,7 +32,7 @@
       <connection-factory>
         <description>global-scope resource defined in EJB DD</description>
         <name>java:global/env/StatefulEJB_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>RaApplicationName</resource-adapter>
         <max-pool-size>16</max-pool-size>
         <min-pool-size>4</min-pool-size>
@@ -46,7 +46,7 @@
       <connection-factory>
         <description>module-scope resource defined in EJB DD</description>
         <name>java:module/env/StatefulEJB_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>RaApplicationName</resource-adapter>
         <max-pool-size>16</max-pool-size>
         <min-pool-size>4</min-pool-size>
@@ -60,7 +60,7 @@
       <connection-factory>
         <description>component-scope resource defined in EJB DD</description>
         <name>java:comp/env/StatefulEJB_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>RaApplicationName</resource-adapter>
         <property>
           <name>testName</name>
@@ -78,7 +78,7 @@
       <connection-factory>
         <description>global-scope resource defined in EJB DD</description>
         <name>java:global/env/HelloEJB_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>RaApplicationName</resource-adapter>
         <max-pool-size>16</max-pool-size>
         <min-pool-size>4</min-pool-size>
@@ -92,7 +92,7 @@
       <connection-factory>
         <description>module-scope resource defined in EJB DD</description>
         <name>java:module/env/HelloEJB_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>RaApplicationName</resource-adapter>
         <max-pool-size>16</max-pool-size>
         <min-pool-size>4</min-pool-size>
@@ -106,7 +106,7 @@
       <connection-factory>
         <description>component-scope resource defined in EJB DD</description>
         <name>java:comp/env/HelloEJB_ConnectionFactory</name>
-        <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+        <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
         <resource-adapter>RaApplicationName</resource-adapter>
         <property>
           <name>testName</name>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-web.xml b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-web.xml
index bc3d454..6924517 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-web.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/ut-web.xml
@@ -37,7 +37,7 @@
     <connection-factory>
        <description>global-scope resource defined in Web DD</description>
        <name>java:global/env/ConnectionFactory</name>
-       <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+       <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
        <resource-adapter>RaApplicationName</resource-adapter>
        <max-pool-size>16</max-pool-size>
        <min-pool-size>4</min-pool-size>
@@ -51,7 +51,7 @@
     <connection-factory>
        <description>application-scope resource defined in Web DD</description>
        <name>java:app/env/ConnectionFactory</name>
-       <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+       <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
        <resource-adapter>RaApplicationName</resource-adapter>
        <max-pool-size>16</max-pool-size>
        <min-pool-size>4</min-pool-size>
@@ -65,7 +65,7 @@
      <connection-factory>
        <description>module-scope resource defined in Web DD</description>
        <name>java:module/env/ConnectionFactory</name>
-       <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+       <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
        <resource-adapter>RaApplicationName</resource-adapter>
        <property>
          <name>testName</name>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/web.xml b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/web.xml
index 3440786..0982a35 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/web.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/descriptor/web.xml
@@ -38,7 +38,7 @@
     <connection-factory>
        <description>global-scope resource to be modified by DD</description>
        <name>java:global/env/Servlet_ModByDD_ConnectionFactory</name>
-       <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+       <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
        <resource-adapter>cfd-ra</resource-adapter>
        <property>
          <name>testName</name>
@@ -49,7 +49,7 @@
     <connection-factory>
        <description>global-scope resource defined in Web DD</description>
        <name>java:global/env/Web_DD_ConnectionFactory</name>
-       <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+       <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
        <resource-adapter>cfd-ra</resource-adapter>
        <max-pool-size>16</max-pool-size>
        <min-pool-size>4</min-pool-size>
@@ -63,7 +63,7 @@
     <connection-factory>
        <description>application-scope resource defined in Web DD</description>
        <name>java:app/env/Web_DD_ConnectionFactory</name>
-       <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+       <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
        <resource-adapter>cfd-ra</resource-adapter>
        <max-pool-size>16</max-pool-size>
        <min-pool-size>4</min-pool-size>
@@ -77,7 +77,7 @@
      <connection-factory>
        <description>module-scope resource defined in Web DD</description>
        <name>java:module/env/Web_DD_ConnectionFactory</name>
-       <interface-name>javax.resource.cci.ConnectionFactory</interface-name>
+       <interface-name>jakarta.resource.cci.ConnectionFactory</interface-name>
        <resource-adapter>cfd-ra</resource-adapter>
        <property>
          <name>testName</name>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ejb/HelloEJB.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ejb/HelloEJB.java
index 96beb4c..47ed92c 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ejb/HelloEJB.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ejb/HelloEJB.java
@@ -19,11 +19,11 @@
 import jakarta.ejb.Stateless;
 
 import javax.naming.InitialContext;
-import javax.resource.ConnectionFactoryDefinitions;
-import javax.resource.ConnectionFactoryDefinition;
-import javax.resource.cci.Connection;
-import javax.resource.cci.ConnectionFactory;
-import javax.resource.spi.TransactionSupport.TransactionSupportLevel;
+import jakarta.resource.ConnectionFactoryDefinitions;
+import jakarta.resource.ConnectionFactoryDefinition;
+import jakarta.resource.cci.Connection;
+import jakarta.resource.cci.ConnectionFactory;
+import jakarta.resource.spi.TransactionSupport.TransactionSupportLevel;
 import jakarta.annotation.Resource;
 
 @ConnectionFactoryDefinitions(
@@ -31,14 +31,14 @@
           @ConnectionFactoryDefinition(
                 description="global-scope resource defined by @ConnectionFactoryDefinition",
                 name = "java:global/env/HelloEJB_ModByDD_ConnectionFactory",
-                interfaceName = "javax.resource.cci.ConnectionFactory",
+                interfaceName = "jakarta.resource.cci.ConnectionFactory",
                 resourceAdapter = "cfd-ra",
                 properties = {"testName=foo"}
           ),
           @ConnectionFactoryDefinition(
                description = "global-scope resource defined by @ConnectionFactoryDefinition", 
                name = "java:global/env/HelloEJB_Annotation_ConnectionFactory", 
-               interfaceName = "javax.resource.cci.ConnectionFactory", 
+               interfaceName = "jakarta.resource.cci.ConnectionFactory", 
                resourceAdapter = "cfd-ra",
                transactionSupport = TransactionSupportLevel.LocalTransaction,
                maxPoolSize = 16,
@@ -49,7 +49,7 @@
           @ConnectionFactoryDefinition(
                description = "application-scope resource defined by @ConnectionFactoryDefinition", 
                name = "java:app/env/HelloEJB_Annotation_ConnectionFactory", 
-               interfaceName = "javax.resource.cci.ConnectionFactory", 
+               interfaceName = "jakarta.resource.cci.ConnectionFactory", 
                transactionSupport = TransactionSupportLevel.XATransaction,
                maxPoolSize = 16,
                minPoolSize = 4,
@@ -60,7 +60,7 @@
           @ConnectionFactoryDefinition(
                description = "module-scope resource defined by @ConnectionFactoryDefinition", 
                name = "java:module/env/HelloEJB_Annotation_ConnectionFactory", 
-               interfaceName = "javax.resource.cci.ConnectionFactory", 
+               interfaceName = "jakarta.resource.cci.ConnectionFactory", 
                resourceAdapter = "cfd-ra",
                properties = {"testName=foo"}
           ),
@@ -68,7 +68,7 @@
           @ConnectionFactoryDefinition(
                description = "component-scope resource defined by @ConnectionFactoryDefinition", 
                name = "java:comp/env/HelloEJB_Annotation_ConnectionFactory", 
-               interfaceName = "javax.resource.cci.ConnectionFactory", 
+               interfaceName = "jakarta.resource.cci.ConnectionFactory", 
                resourceAdapter = "cfd-ra",
                properties = {"testName=foo"}
           )
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ejb/HelloStatefulEJB.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ejb/HelloStatefulEJB.java
index c1e1b3f..dd573b7 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ejb/HelloStatefulEJB.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ejb/HelloStatefulEJB.java
@@ -18,11 +18,11 @@
 
 import jakarta.ejb.Stateful;
 import jakarta.annotation.PostConstruct;
-import javax.resource.ConnectionFactoryDefinitions;
-import javax.resource.ConnectionFactoryDefinition;
-import javax.resource.cci.Connection;
-import javax.resource.cci.ConnectionFactory;
-import javax.resource.spi.TransactionSupport.TransactionSupportLevel;
+import jakarta.resource.ConnectionFactoryDefinitions;
+import jakarta.resource.ConnectionFactoryDefinition;
+import jakarta.resource.cci.Connection;
+import jakarta.resource.cci.ConnectionFactory;
+import jakarta.resource.spi.TransactionSupport.TransactionSupportLevel;
 
 import javax.naming.*;
 
@@ -31,7 +31,7 @@
                 @ConnectionFactoryDefinition(
                         description="global-scope resource defined by @ConnectionFactoryDefinition",
                         name = "java:global/env/HelloStatefulEJB_ModByDD_ConnectionFactory",
-                        interfaceName = "javax.resource.cci.ConnectionFactory",
+                        interfaceName = "jakarta.resource.cci.ConnectionFactory",
                         resourceAdapter = "cfd-ra",
                         properties = {"testName=foo"}
                 ),
@@ -39,7 +39,7 @@
                 @ConnectionFactoryDefinition(
                         description="global-scope resource defined by @ConnectionFactoryDefinition",
                         name = "java:global/env/HelloStatefulEJB_Annotation_ConnectionFactory",
-                        interfaceName = "javax.resource.cci.ConnectionFactory",
+                        interfaceName = "jakarta.resource.cci.ConnectionFactory",
                         resourceAdapter = "cfd-ra",
                         transactionSupport = TransactionSupportLevel.LocalTransaction,
                         maxPoolSize = 16,
@@ -50,7 +50,7 @@
                 @ConnectionFactoryDefinition(
                         description="application-scope resource defined by @ConnectionFactoryDefinition",
                         name = "java:app/env/HelloStatefulEJB_Annotation_ConnectionFactory",
-                        interfaceName = "javax.resource.cci.ConnectionFactory",
+                        interfaceName = "jakarta.resource.cci.ConnectionFactory",
                         resourceAdapter = "cfd-ra",
                         transactionSupport = TransactionSupportLevel.XATransaction,
                         maxPoolSize = 16,
@@ -61,7 +61,7 @@
                 @ConnectionFactoryDefinition(
                         description="module-scope resource defined by @ConnectionFactoryDefinition",
                         name = "java:module/env/HelloStatefulEJB_Annotation_ConnectionFactory",
-                        interfaceName = "javax.resource.cci.ConnectionFactory",
+                        interfaceName = "jakarta.resource.cci.ConnectionFactory",
                         resourceAdapter = "cfd-ra",
                         properties = {"testName=foo"}
                 ),
@@ -69,7 +69,7 @@
                 @ConnectionFactoryDefinition(
                         description="component-scope resource defined by @ConnectionFactoryDefinition",
                         name = "java:comp/env/HelloStatefulEJB_Annotation_ConnectionFactory",
-                        interfaceName = "javax.resource.cci.ConnectionFactory",
+                        interfaceName = "jakarta.resource.cci.ConnectionFactory",
                         resourceAdapter = "cfd-ra",
                         properties = {"testName=foo"}
                 )
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/AbstractAdminObject.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/AbstractAdminObject.java
index ff4d599..f532aec 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/AbstractAdminObject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/AbstractAdminObject.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.*;
+import jakarta.resource.spi.*;
 
 public abstract class AbstractAdminObject {
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/AbstractResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/AbstractResourceAdapter.java
index a337cb0..07b9d78 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/AbstractResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/AbstractResourceAdapter.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.*;
+import jakarta.resource.spi.*;
 
 public abstract class AbstractResourceAdapter{
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/DeliveryWork.java
index 3cf8b01..0034465 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/DeliveryWork.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.work.Work;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.work.Work;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/MyAdminObject.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/MyAdminObject.java
index d57c4d6..ba2e765 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/MyAdminObject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/MyAdminObject.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.AdministeredObject;
-import javax.resource.spi.ConfigProperty;
+import jakarta.resource.spi.AdministeredObject;
+import jakarta.resource.spi.ConfigProperty;
 
 @AdministeredObject(
         adminObjectInterfaces = {connector.MyAdminObject.class}
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/MyConnection.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/MyConnection.java
index e30a6e3..342b29c 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/MyConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/MyConnection.java
@@ -16,12 +16,12 @@
 
 package connector;
 
-import javax.resource.ResourceException;
-import javax.resource.cci.Connection;
-import javax.resource.cci.ConnectionMetaData;
-import javax.resource.cci.Interaction;
-import javax.resource.cci.LocalTransaction;
-import javax.resource.cci.ResultSetInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.cci.Connection;
+import jakarta.resource.cci.ConnectionMetaData;
+import jakarta.resource.cci.Interaction;
+import jakarta.resource.cci.LocalTransaction;
+import jakarta.resource.cci.ResultSetInfo;
 
 public class MyConnection implements Connection {
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/MyConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/MyConnectionFactory.java
index a613d69..9f24648 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/MyConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/MyConnectionFactory.java
@@ -18,13 +18,13 @@
 
 import javax.naming.NamingException;
 import javax.naming.Reference;
-import javax.resource.ResourceException;
-import javax.resource.cci.Connection;
-import javax.resource.cci.ConnectionFactory;
-import javax.resource.cci.ConnectionSpec;
-import javax.resource.cci.RecordFactory;
-import javax.resource.cci.ResourceAdapterMetaData;
-import javax.resource.spi.ConnectionManager;
+import jakarta.resource.ResourceException;
+import jakarta.resource.cci.Connection;
+import jakarta.resource.cci.ConnectionFactory;
+import jakarta.resource.cci.ConnectionSpec;
+import jakarta.resource.cci.RecordFactory;
+import jakarta.resource.cci.ResourceAdapterMetaData;
+import jakarta.resource.spi.ConnectionManager;
 
 public class MyConnectionFactory implements ConnectionFactory {
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/MyManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/MyManagedConnectionFactory.java
index 0592991..f34e83b 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/MyManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/MyManagedConnectionFactory.java
@@ -19,16 +19,16 @@
 import java.io.PrintWriter;
 import java.util.Set;
 
-import javax.resource.ResourceException;
-import javax.resource.cci.Connection;
-import javax.resource.cci.ConnectionFactory;
-import javax.resource.spi.ConfigProperty;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ConnectionDefinition;
-import javax.resource.spi.TransactionSupport;
+import jakarta.resource.ResourceException;
+import jakarta.resource.cci.Connection;
+import jakarta.resource.cci.ConnectionFactory;
+import jakarta.resource.spi.ConfigProperty;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ConnectionDefinition;
+import jakarta.resource.spi.TransactionSupport;
 import javax.security.auth.Subject;
 
 @ConnectionDefinition(
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/MyWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/MyWork.java
index 99280ef..614381e 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/MyWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/MyWork.java
@@ -17,9 +17,9 @@
 package connector;
 
 import java.lang.reflect.Method;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/SimpleActivationSpec.java
index fd84475..512e5c6 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/SimpleActivationSpec.java
@@ -16,9 +16,9 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.Activation;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.Activation;
 
 /**
  * This class is supposed to implemented as a JavaBean
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/SimpleResourceAdapterImpl.java
index 7cce61a..25611ed 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -17,14 +17,14 @@
 package connector;
 
 import java.util.*;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.TransactionSupport.TransactionSupportLevel;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.*;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.TransactionSupport.TransactionSupportLevel;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 
 /**
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/TestWMWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/TestWMWork.java
index c2f521c..ee0fae9 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/TestWMWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/TestWMWork.java
@@ -16,10 +16,10 @@
 
 package connector;
 
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.WorkException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.WorkException;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/V3WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/V3WorkDispatcher.java
index 53fdc10..8adf3cc 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/V3WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/V3WorkDispatcher.java
@@ -16,11 +16,11 @@
 
 package connector;
 
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
 
 public class V3WorkDispatcher extends WorkDispatcher {
     public V3WorkDispatcher(String id, BootstrapContext ctx, MessageEndpointFactory factory, ActivationSpec spec) {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/WorkDispatcher.java
index 3a27195..42249dc 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ra/src/connector/WorkDispatcher.java
@@ -17,15 +17,15 @@
 package connector;
 
 import java.lang.reflect.Method;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 import javax.transaction.xa.Xid;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/servlet/Servlet.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/servlet/Servlet.java
index 8a597e8..36759f6 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/servlet/Servlet.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/servlet/Servlet.java
@@ -18,11 +18,11 @@
 
 import java.io.*;
 
-import javax.resource.ConnectionFactoryDefinitions;
-import javax.resource.ConnectionFactoryDefinition;
-import javax.resource.cci.Connection;
-import javax.resource.cci.ConnectionFactory;
-import javax.resource.spi.TransactionSupport.TransactionSupportLevel;
+import jakarta.resource.ConnectionFactoryDefinitions;
+import jakarta.resource.ConnectionFactoryDefinition;
+import jakarta.resource.cci.Connection;
+import jakarta.resource.cci.ConnectionFactory;
+import jakarta.resource.spi.TransactionSupport.TransactionSupportLevel;
 import javax.servlet.*;
 import javax.servlet.http.*;
 import javax.servlet.annotation.*;
@@ -44,7 +44,7 @@
                 @ConnectionFactoryDefinition(
                         description="global-scope resource defined by @ConnectionFactoryDefinition",
                         name = "java:global/env/Servlet_ModByDD_ConnectionFactory",
-                        interfaceName = "javax.resource.cci.ConnectionFactory",
+                        interfaceName = "jakarta.resource.cci.ConnectionFactory",
                         resourceAdapter = "cfd-ra",
                         properties = {"testName=foo"}
                 ),
@@ -52,7 +52,7 @@
                 @ConnectionFactoryDefinition(
                         description="global-scope resource defined by @ConnectionFactoryDefinition",
                         name = "java:global/env/Servlet_ConnectionFactory",
-                        interfaceName = "javax.resource.cci.ConnectionFactory",
+                        interfaceName = "jakarta.resource.cci.ConnectionFactory",
                         resourceAdapter = "cfd-ra",
                         transactionSupport = TransactionSupportLevel.LocalTransaction,
                         maxPoolSize = 16,
@@ -63,7 +63,7 @@
                 @ConnectionFactoryDefinition(
                         description="application-scope resource defined by @ConnectionFactoryDefinition",
                         name = "java:app/env/Servlet_ConnectionFactory",
-                        interfaceName = "javax.resource.cci.ConnectionFactory",
+                        interfaceName = "jakarta.resource.cci.ConnectionFactory",
                         resourceAdapter = "cfd-ra",
                         transactionSupport = TransactionSupportLevel.XATransaction,
                         maxPoolSize = 16,
@@ -74,7 +74,7 @@
                 @ConnectionFactoryDefinition(
                         description="module-scope resource defined by @ConnectionFactoryDefinition",
                         name = "java:module/env/Servlet_ConnectionFactory",
-                        interfaceName = "javax.resource.cci.ConnectionFactory",
+                        interfaceName = "jakarta.resource.cci.ConnectionFactory",
                         resourceAdapter = "cfd-ra",
                         properties = {"testName=foo"}
                 ),
@@ -82,7 +82,7 @@
                 @ConnectionFactoryDefinition(
                         description="component-scope resource defined by @ConnectionFactoryDefinition",
                         name = "java:comp/env/Servlet_ConnectionFactory",
-                        interfaceName = "javax.resource.cci.ConnectionFactory",
+                        interfaceName = "jakarta.resource.cci.ConnectionFactory",
                         resourceAdapter = "cfd-ra",
                         properties = {"testName=foo"}
                 )
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ut/ArchiveTest.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ut/ArchiveTest.java
index f13ba07..bdc49be 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ut/ArchiveTest.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ut/ArchiveTest.java
@@ -90,7 +90,7 @@
         desc = new ConnectionFactoryDefinitionDescriptor();
         desc.setDescription("global-scope resource defined in application DD");
         desc.setName("java:global/env/ConnectionFactory");
-        desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+        desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
         desc.setResourceAdapter("RaApplicationName");
         desc.setTransactionSupport("LocalTransaction");
         desc.setMaxPoolSize(16);
@@ -101,7 +101,7 @@
         desc = new ConnectionFactoryDefinitionDescriptor();
         desc.setDescription("application-scope resource defined in application DD");
         desc.setName("java:app/env/ConnectionFactory");
-        desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+        desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
         desc.setResourceAdapter("RaApplicationName");
         desc.addProperty("testName", "foo");
         expectedCFDDs.put(desc.getName(), desc);
@@ -144,7 +144,7 @@
         desc = new ConnectionFactoryDefinitionDescriptor();
         desc.setDescription("global-scope resource to be modified by DD");
         desc.setName("java:global/env/Servlet_ModByDD_ConnectionFactory");
-        desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+        desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
         desc.setResourceAdapter("cfd-ra");
         desc.addProperty("testName", "foo");
         expectedCFDDs.put(desc.getName(), desc);
@@ -152,7 +152,7 @@
         desc = new ConnectionFactoryDefinitionDescriptor();
         desc.setDescription("global-scope resource defined by @ConnectionFactoryDefinition");
         desc.setName("java:global/env/Servlet_ConnectionFactory");
-        desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+        desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
         desc.setResourceAdapter("cfd-ra");
         desc.setTransactionSupport("LocalTransaction");
         desc.setMaxPoolSize(16);
@@ -163,7 +163,7 @@
         desc = new ConnectionFactoryDefinitionDescriptor();
         desc.setDescription("application-scope resource defined by @ConnectionFactoryDefinition");
         desc.setName("java:app/env/Servlet_ConnectionFactory");
-        desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+        desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
         desc.setResourceAdapter("cfd-ra");
         desc.setTransactionSupport("XATransaction");
         desc.setMaxPoolSize(16);
@@ -174,7 +174,7 @@
         desc = new ConnectionFactoryDefinitionDescriptor();
         desc.setDescription("module-scope resource defined by @ConnectionFactoryDefinition");
         desc.setName("java:module/env/Servlet_ConnectionFactory");
-        desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+        desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
         desc.setResourceAdapter("cfd-ra");
         desc.addProperty("testName", "foo");
         expectedCFDDs.put(desc.getName(), desc);
@@ -182,7 +182,7 @@
         desc = new ConnectionFactoryDefinitionDescriptor();
         desc.setDescription("component-scope resource defined by @ConnectionFactoryDefinition");
         desc.setName("java:comp/env/Servlet_ConnectionFactory");
-        desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+        desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
         desc.setResourceAdapter("cfd-ra");
         desc.addProperty("testName", "foo");
         expectedCFDDs.put(desc.getName(), desc);
@@ -190,7 +190,7 @@
         desc = new ConnectionFactoryDefinitionDescriptor();
         desc.setDescription("global-scope resource defined in Web DD");
         desc.setName("java:global/env/Web_DD_ConnectionFactory");
-        desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+        desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
         desc.setResourceAdapter("cfd-ra");
         desc.setTransactionSupport("LocalTransaction");
         desc.setMaxPoolSize(16);
@@ -201,7 +201,7 @@
         desc = new ConnectionFactoryDefinitionDescriptor();
         desc.setDescription("application-scope resource defined in Web DD");
         desc.setName("java:app/env/Web_DD_ConnectionFactory");
-        desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+        desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
         desc.setResourceAdapter("cfd-ra");
         desc.setTransactionSupport("XATransaction");
         desc.setMaxPoolSize(16);
@@ -212,7 +212,7 @@
         desc = new ConnectionFactoryDefinitionDescriptor();
         desc.setDescription("module-scope resource defined in Web DD");
         desc.setName("java:module/env/Web_DD_ConnectionFactory");
-        desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+        desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
         desc.setResourceAdapter("cfd-ra");
         desc.addProperty("testName", "foo");
         expectedCFDDs.put(desc.getName(), desc);
@@ -258,14 +258,14 @@
         desc = new ConnectionFactoryDefinitionDescriptor();
         desc.setDescription("global-scope resource to be modified by DD");
         desc.setName("java:global/env/HelloStatefulEJB_ModByDD_ConnectionFactory");
-        desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+        desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
         desc.setResourceAdapter("cfd-ra");
         desc.addProperty("testName", "foo");
         expectedCFDDs.put(desc.getName(), desc);
 
         desc.setDescription("global-scope resource to be modified by DD");
         desc.setName("java:global/env/HelloEJB_ModByDD_ConnectionFactory");
-        desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+        desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
         desc.setResourceAdapter("cfd-ra");
         desc.addProperty("testName", "foo");
         expectedCFDDs.put(desc.getName(), desc);
@@ -275,7 +275,7 @@
             desc = new ConnectionFactoryDefinitionDescriptor();
             desc.setDescription("global-scope resource defined in EJB DD");
             desc.setName("java:global/env/HelloStatefulEJB_DD_ConnectionFactory");
-            desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+            desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
             desc.setResourceAdapter("cfd-ra");
             desc.setTransactionSupport("LocalTransaction");
             desc.setMaxPoolSize(16);
@@ -286,7 +286,7 @@
             desc = new ConnectionFactoryDefinitionDescriptor();
             desc.setDescription("application-scope resource defined in EJB DD");
             desc.setName("java:app/env/HelloStatefulEJB_DD_ConnectionFactory");
-            desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+            desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
             desc.setResourceAdapter("cfd-ra");
             desc.setTransactionSupport("XATransaction");
             desc.setMaxPoolSize(16);
@@ -297,7 +297,7 @@
             desc = new ConnectionFactoryDefinitionDescriptor();
             desc.setDescription("module-scope resource defined in EJB DD");
             desc.setName("java:module/env/HelloStatefulEJB_DD_ConnectionFactory");
-            desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+            desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
             desc.setResourceAdapter("cfd-ra");
             desc.addProperty("testName", "foo");
             expectedCFDDs.put(desc.getName(), desc);
@@ -305,7 +305,7 @@
             desc = new ConnectionFactoryDefinitionDescriptor();
             desc.setDescription("component-scope resource defined in EJB DD");
             desc.setName("java:comp/env/HelloStatefulEJB_DD_ConnectionFactory");
-            desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+            desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
             desc.setResourceAdapter("cfd-ra");
             desc.addProperty("testName", "foo");
             expectedCFDDs.put(desc.getName(), desc);
@@ -315,7 +315,7 @@
             desc = new ConnectionFactoryDefinitionDescriptor();
             desc.setDescription("global-scope resource defined in EJB DD");
             desc.setName("java:global/env/HelloEJB_DD_ConnectionFactory");
-            desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+            desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
             desc.setResourceAdapter("cfd-ra");
             desc.setTransactionSupport("LocalTransaction");
             desc.setMaxPoolSize(16);
@@ -326,7 +326,7 @@
             desc = new ConnectionFactoryDefinitionDescriptor();
             desc.setDescription("application-scope resource defined in EJB DD");
             desc.setName("java:app/env/HelloEJB_DD_ConnectionFactory");
-            desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+            desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
             desc.setResourceAdapter("cfd-ra");
             desc.setTransactionSupport("XATransaction");
             desc.setMaxPoolSize(16);
@@ -337,7 +337,7 @@
             desc = new ConnectionFactoryDefinitionDescriptor();
             desc.setDescription("module-scope resource defined in EJB DD");
             desc.setName("java:module/env/HelloEJB_DD_ConnectionFactory");
-            desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+            desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
             desc.setResourceAdapter("cfd-ra");
             desc.addProperty("testName", "foo");
             expectedCFDDs.put(desc.getName(), desc);
@@ -345,7 +345,7 @@
             desc = new ConnectionFactoryDefinitionDescriptor();
             desc.setDescription("component-scope resource defined in EJB DD");
             desc.setName("java:comp/env/HelloEJB_DD_ConnectionFactory");
-            desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+            desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
             desc.setResourceAdapter("cfd-ra");
             desc.addProperty("testName", "foo");
             expectedCFDDs.put(desc.getName(), desc);
@@ -356,7 +356,7 @@
             desc = new ConnectionFactoryDefinitionDescriptor();
             desc.setDescription("global-scope resource defined by @ConnectionFactoryDefinition");
             desc.setName("java:global/env/HelloStatefulEJB_Annotation_ConnectionFactory");
-            desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+            desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
             desc.setResourceAdapter("cfd-ra");
             desc.setTransactionSupport("LocalTransaction");
             desc.setMaxPoolSize(16);
@@ -367,7 +367,7 @@
             desc = new ConnectionFactoryDefinitionDescriptor();
             desc.setDescription("application-scope resource defined by @ConnectionFactoryDefinition");
             desc.setName("java:app/env/HelloStatefulEJB_Annotation_ConnectionFactory");
-            desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+            desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
             desc.setResourceAdapter("cfd-ra");
             desc.setTransactionSupport("XATransaction");
             desc.setMaxPoolSize(16);
@@ -378,7 +378,7 @@
             desc = new ConnectionFactoryDefinitionDescriptor();
             desc.setDescription("module-scope resource defined by @ConnectionFactoryDefinition");
             desc.setName("java:module/env/HelloStatefulEJB_Annotation_ConnectionFactory");
-            desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+            desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
             desc.setResourceAdapter("cfd-ra");
             desc.addProperty("testName", "foo");
             expectedCFDDs.put(desc.getName(), desc);
@@ -386,7 +386,7 @@
             desc = new ConnectionFactoryDefinitionDescriptor();
             desc.setDescription("component-scope resource defined by @ConnectionFactoryDefinition");
             desc.setName("java:comp/env/HelloStatefulEJB_Annotation_ConnectionFactory");
-            desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+            desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
             desc.setResourceAdapter("cfd-ra");
             desc.addProperty("testName", "foo");
             expectedCFDDs.put(desc.getName(), desc);
@@ -397,7 +397,7 @@
             desc = new ConnectionFactoryDefinitionDescriptor();
             desc.setDescription("global-scope resource defined by @ConnectionFactoryDefinition");
             desc.setName("java:global/env/HelloEJB_Annotation_ConnectionFactory");
-            desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+            desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
             desc.setResourceAdapter("cfd-ra");
             desc.setTransactionSupport("LocalTransaction");
             desc.setMaxPoolSize(16);
@@ -408,7 +408,7 @@
             desc = new ConnectionFactoryDefinitionDescriptor();
             desc.setDescription("application-scope resource defined by @ConnectionFactoryDefinition");
             desc.setName("java:app/env/HelloEJB_Annotation_ConnectionFactory");
-            desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+            desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
             desc.setResourceAdapter("cfd-ra");
             desc.setTransactionSupport("XATransaction");
             desc.setMaxPoolSize(16);
@@ -419,7 +419,7 @@
             desc = new ConnectionFactoryDefinitionDescriptor();
             desc.setDescription("module-scope resource defined by @ConnectionFactoryDefinition");
             desc.setName("java:module/env/HelloEJB_Annotation_ConnectionFactory");
-            desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+            desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
             desc.setResourceAdapter("cfd-ra");
             desc.addProperty("testName", "foo");
             expectedCFDDs.put(desc.getName(), desc);
@@ -427,7 +427,7 @@
             desc = new ConnectionFactoryDefinitionDescriptor();
             desc.setDescription("component-scope resource defined by @ConnectionFactoryDefinition");
             desc.setName("java:comp/env/HelloEJB_Annotation_ConnectionFactory");
-            desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+            desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
             desc.setResourceAdapter("cfd-ra");
             desc.addProperty("testName", "foo");
             expectedCFDDs.put(desc.getName(), desc);
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ut/DDTest.java b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ut/DDTest.java
index 181287a..9e5f8f5 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ut/DDTest.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connection-factory-definition/ut/DDTest.java
@@ -70,7 +70,7 @@
             desc = new ConnectionFactoryDefinitionDescriptor();
             desc.setDescription("global-scope resource defined in application DD");
             desc.setName("java:global/env/ConnectionFactory");
-            desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+            desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
             desc.setResourceAdapter("RaApplicationName");
             desc.setTransactionSupport("LocalTransaction");
             desc.setMaxPoolSize(16);
@@ -80,7 +80,7 @@
             
             desc = new ConnectionFactoryDefinitionDescriptor();
             desc.setName("java:app/env/ConnectionFactory");
-            desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+            desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
             desc.setResourceAdapter("RaApplicationName");
             desc.setDescription("application-scope resource defined in application DD");
             desc.setTransactionSupport("NoTransaction");
@@ -147,7 +147,7 @@
         desc = new ConnectionFactoryDefinitionDescriptor();
         desc.setDescription("global-scope resource defined in EJB DD");
         desc.setName("java:global/env/StatefulEJB_ConnectionFactory");
-        desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+        desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
         desc.setResourceAdapter("RaApplicationName");
         desc.setTransactionSupport("LocalTransaction");
         desc.setMaxPoolSize(16);
@@ -158,7 +158,7 @@
         desc = new ConnectionFactoryDefinitionDescriptor();
         desc.setDescription("module-scope resource defined in EJB DD");
         desc.setName("java:module/env/StatefulEJB_ConnectionFactory");
-        desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+        desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
         desc.setResourceAdapter("RaApplicationName");
         desc.setTransactionSupport("XATransaction");
         desc.setMaxPoolSize(16);
@@ -169,7 +169,7 @@
         desc = new ConnectionFactoryDefinitionDescriptor();
         desc.setDescription("component-scope resource defined in EJB DD");
         desc.setName("java:comp/env/StatefulEJB_ConnectionFactory");
-        desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+        desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
         desc.setResourceAdapter("RaApplicationName");
         desc.addProperty("testName", "foo");
         expectedCFDDs.put(desc.getName(), desc);
@@ -185,7 +185,7 @@
         desc = new ConnectionFactoryDefinitionDescriptor();
         desc.setDescription("global-scope resource defined in EJB DD");
         desc.setName("java:global/env/HelloEJB_ConnectionFactory");
-        desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+        desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
         desc.setResourceAdapter("RaApplicationName");
         desc.setTransactionSupport("LocalTransaction");
         desc.setMaxPoolSize(16);
@@ -196,7 +196,7 @@
         desc = new ConnectionFactoryDefinitionDescriptor();
         desc.setDescription("module-scope resource defined in EJB DD");
         desc.setName("java:module/env/HelloEJB_ConnectionFactory");
-        desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+        desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
         desc.setResourceAdapter("RaApplicationName");
         desc.setTransactionSupport("XATransaction");
         desc.setMaxPoolSize(16);
@@ -207,7 +207,7 @@
         desc = new ConnectionFactoryDefinitionDescriptor();
         desc.setDescription("component-scope resource defined in EJB DD");
         desc.setName("java:comp/env/HelloEJB_ConnectionFactory");
-        desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+        desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
         desc.setResourceAdapter("RaApplicationName");
         desc.addProperty("testName", "foo");
         expectedCFDDs.put(desc.getName(), desc);
@@ -236,7 +236,7 @@
                 desc = new ConnectionFactoryDefinitionDescriptor();
                 desc.setDescription("global-scope resource defined in EJB DD");
                 desc.setName("java:global/env/Entity_ConnectionFactory");
-                desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+                desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
                 desc.setResourceAdapter("RaApplicationName");
                 desc.setTransactionSupport("LocalTransaction");
                 desc.setMaxPoolSize(16);
@@ -247,7 +247,7 @@
                 desc = new ConnectionFactoryDefinitionDescriptor();
                 desc.setDescription("module-scope resource defined in EJB DD");
                 desc.setName("java:module/env/Entity_ConnectionFactory");
-                desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+                desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
                 desc.setResourceAdapter("RaApplicationName");
                 desc.setTransactionSupport("XATransaction");
                 desc.setMaxPoolSize(16);
@@ -258,7 +258,7 @@
                 desc = new ConnectionFactoryDefinitionDescriptor();
                 desc.setDescription("component-scope resource defined in EJB DD");
                 desc.setName("java:comp/env/Entity_ConnectionFactory");
-                desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+                desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
                 desc.setResourceAdapter("RaApplicationName");
                 desc.addProperty("testName", "foo");
                 expectedCFDDs.put(desc.getName(), desc);
@@ -300,7 +300,7 @@
                 desc = new ConnectionFactoryDefinitionDescriptor();
                 desc.setDescription("global-scope resource defined in EJB DD");
                 desc.setName("java:global/env/MDB_ConnectionFactory");
-                desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+                desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
                 desc.setResourceAdapter("RaApplicationName");
                 desc.setTransactionSupport("LocalTransaction");
                 desc.setMaxPoolSize(16);
@@ -311,7 +311,7 @@
                 desc = new ConnectionFactoryDefinitionDescriptor();
                 desc.setDescription("module-scope resource defined in EJB DD");
                 desc.setName("java:module/env/MDB_ConnectionFactory");
-                desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+                desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
                 desc.setResourceAdapter("RaApplicationName");
                 desc.setTransactionSupport("XATransaction");
                 desc.setMaxPoolSize(16);
@@ -322,7 +322,7 @@
                 desc = new ConnectionFactoryDefinitionDescriptor();
                 desc.setDescription("component-scope resource defined in EJB DD");
                 desc.setName("java:comp/env/MDB_ConnectionFactory");
-                desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+                desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
                 desc.setResourceAdapter("RaApplicationName");
                 desc.addProperty("testName", "foo");
                 expectedCFDDs.put(desc.getName(), desc);
@@ -364,7 +364,7 @@
                 desc = new ConnectionFactoryDefinitionDescriptor();
                 desc.setDescription("global-scope resource defined in EJB DD");
                 desc.setName("java:global/env/Interceptor_ConnectionFactory");
-                desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+                desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
                 desc.setResourceAdapter("RaApplicationName");
                 desc.setTransactionSupport("LocalTransaction");
                 desc.setMaxPoolSize(16);
@@ -375,7 +375,7 @@
                 desc = new ConnectionFactoryDefinitionDescriptor();
                 desc.setDescription("module-scope resource defined in EJB DD");
                 desc.setName("java:module/env/Interceptor_ConnectionFactory");
-                desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+                desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
                 desc.setResourceAdapter("RaApplicationName");
                 desc.setTransactionSupport("XATransaction");
                 desc.setMaxPoolSize(16);
@@ -386,7 +386,7 @@
                 desc = new ConnectionFactoryDefinitionDescriptor();
                 desc.setDescription("component-scope resource defined in EJB DD");
                 desc.setName("java:comp/env/Interceptor_ConnectionFactory");
-                desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+                desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
                 desc.setResourceAdapter("RaApplicationName");
                 desc.addProperty("testName", "foo");
                 expectedCFDDs.put(desc.getName(), desc);
@@ -427,7 +427,7 @@
             desc = new ConnectionFactoryDefinitionDescriptor();
             desc.setDescription("global-scope resource defined in Web DD");
             desc.setName("java:global/env/ConnectionFactory");
-            desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+            desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
             desc.setResourceAdapter("RaApplicationName");
             desc.setTransactionSupport("LocalTransaction");
             desc.setMaxPoolSize(16);
@@ -438,7 +438,7 @@
             desc = new ConnectionFactoryDefinitionDescriptor();
             desc.setDescription("application-scope resource defined in Web DD");
             desc.setName("java:app/env/ConnectionFactory");
-            desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+            desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
             desc.setResourceAdapter("RaApplicationName");
             desc.setTransactionSupport("XATransaction");
             desc.setMaxPoolSize(16);
@@ -449,7 +449,7 @@
             desc = new ConnectionFactoryDefinitionDescriptor();
             desc.setDescription("module-scope resource defined in Web DD");
             desc.setName("java:module/env/ConnectionFactory");
-            desc.setInterfaceName("javax.resource.cci.ConnectionFactory");
+            desc.setInterfaceName("jakarta.resource.cci.ConnectionFactory");
             desc.setResourceAdapter("RaApplicationName");
             desc.addProperty("testName", "foo");
             expectedCFDDs.put(desc.getName(), desc);
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/DeliveryWork.java
index 7165489..cbed349 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/DeliveryWork.java
@@ -18,14 +18,14 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.*;
-import javax.resource.*;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.*;
+import jakarta.resource.*;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/MyWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/MyWork.java
index a7d0a77..3bdedaf 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/MyWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/MyWork.java
@@ -18,15 +18,15 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.ResourceAdapterAssociation;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.ResourceException;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.ResourceAdapterAssociation;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/SimpleActivationSpec.java
index 56e8e32..8182ef5 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/SimpleActivationSpec.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
 
 /**
  * This class is supposed to implemented as a JavaBean
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/SimpleResourceAdapterImpl.java
index 22acafb..7c27e96 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -20,20 +20,20 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Properties;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/TestWMWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/TestWMWork.java
index 839ca0e..bb05534 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/TestWMWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/TestWMWork.java
@@ -18,13 +18,13 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.WorkException;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.WorkException;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/V3WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/V3WorkDispatcher.java
index 53fdc10..8adf3cc 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/V3WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/V3WorkDispatcher.java
@@ -16,11 +16,11 @@
 
 package connector;
 
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
 
 public class V3WorkDispatcher extends WorkDispatcher {
     public V3WorkDispatcher(String id, BootstrapContext ctx, MessageEndpointFactory factory, ActivationSpec spec) {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/WorkDispatcher.java
index fcdac24..64b71c4 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.5/ra/src/connector/WorkDispatcher.java
@@ -18,15 +18,15 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 import javax.transaction.xa.Xid;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/DeliveryWork.java
index 63076d3..658233e 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/DeliveryWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/JSR322Work.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/JSR322Work.java
index eda3858..5107ac1 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/JSR322Work.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/JSR322Work.java
@@ -16,9 +16,9 @@
 
 package connector;
 
-import javax.resource.spi.work.WorkContextProvider;
-import javax.resource.spi.work.WorkContext;
-import javax.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.work.WorkContextProvider;
+import jakarta.resource.spi.work.WorkContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
 import java.util.List;
 import java.util.ArrayList;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/MyAdminObject.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/MyAdminObject.java
index c7596b4..a68a5b7 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/MyAdminObject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/MyAdminObject.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.*;
+import jakarta.resource.spi.*;
 
 public class MyAdminObject implements java.io.Serializable, ResourceAdapterAssociation {
 
@@ -37,7 +37,7 @@
     }
 
 
-    public void setResourceAdapter(ResourceAdapter ra) throws javax.resource.ResourceException{
+    public void setResourceAdapter(ResourceAdapter ra) throws jakarta.resource.ResourceException{
         this.resourceAdapter = ra;
     }
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/MyPlainSICWithGPC.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/MyPlainSICWithGPC.java
index c98bc54..7043a92 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/MyPlainSICWithGPC.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/MyPlainSICWithGPC.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import javax.security.auth.Subject;
 import javax.security.auth.message.callback.GroupPrincipalCallback;
 import javax.security.auth.callback.CallbackHandler;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/MyPlainSecurityContext.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/MyPlainSecurityContext.java
index 595daf8..d1dcc5d 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/MyPlainSecurityContext.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/MyPlainSecurityContext.java
@@ -25,7 +25,7 @@
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.Callback;
 import javax.security.auth.callback.UnsupportedCallbackException;
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import java.util.List;
 import java.util.ArrayList;
 import java.io.IOException;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/MySecurityContext.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/MySecurityContext.java
index 294cebf..b377185 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/MySecurityContext.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/MySecurityContext.java
@@ -24,7 +24,7 @@
 import javax.security.auth.message.callback.CallerPrincipalCallback;
 import javax.security.auth.message.callback.PasswordValidationCallback;
 import javax.security.auth.message.callback.GroupPrincipalCallback;
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import java.io.IOException;
 import java.util.List;
 import java.util.ArrayList;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/MySecurityContextWithListener.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/MySecurityContextWithListener.java
index b3decce..e64fdfe 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/MySecurityContextWithListener.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/MySecurityContextWithListener.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.WorkContextLifecycleListener;
+import jakarta.resource.spi.work.WorkContextLifecycleListener;
 
 
 public class MySecurityContextWithListener extends MySecurityContext implements WorkContextLifecycleListener {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/NestedWork_Child.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/NestedWork_Child.java
index 1428bca..ff23161 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/NestedWork_Child.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/NestedWork_Child.java
@@ -16,9 +16,9 @@
 
 package connector;
 
-import javax.resource.spi.work.*;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.XATerminator;
+import jakarta.resource.spi.work.*;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.XATerminator;
 import javax.transaction.xa.Xid;
 import java.util.List;
 import java.util.ArrayList;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/NestedWork_Parent.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/NestedWork_Parent.java
index 4e60c96..2cb8991 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/NestedWork_Parent.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/NestedWork_Parent.java
@@ -16,9 +16,9 @@
 
 package connector;
 
-import javax.resource.spi.work.*;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.XATerminator;
+import jakarta.resource.spi.work.*;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.XATerminator;
 import javax.transaction.xa.Xid;
 import java.util.List;
 import java.util.ArrayList;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/SimpleActivationSpec.java
index 56e8e32..8182ef5 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/SimpleActivationSpec.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
 
 /**
  * This class is supposed to implemented as a JavaBean
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/SimpleResourceAdapterImpl.java
index 1ae55e0..c5dea45 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -20,20 +20,20 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Properties;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/SinglePrincipalSIC.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/SinglePrincipalSIC.java
index ec502ef..87b408c 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/SinglePrincipalSIC.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/SinglePrincipalSIC.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.Callback;
 import javax.security.auth.Subject;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/UnauthenticatedIdentityOptWorkContext.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/UnauthenticatedIdentityOptWorkContext.java
index a7db1e2..24d47d9 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/UnauthenticatedIdentityOptWorkContext.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/UnauthenticatedIdentityOptWorkContext.java
@@ -23,7 +23,7 @@
 import javax.security.auth.callback.UnsupportedCallbackException;
 import javax.security.auth.Subject;
 import javax.security.auth.message.callback.CallerPrincipalCallback;
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import java.io.IOException;
 import java.util.List;
 import java.util.ArrayList;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/UnauthenticatedSecurityContext_EmptyExecutionSubject.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/UnauthenticatedSecurityContext_EmptyExecutionSubject.java
index cc18a13..a31916a 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/UnauthenticatedSecurityContext_EmptyExecutionSubject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/UnauthenticatedSecurityContext_EmptyExecutionSubject.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.Callback;
 import javax.security.auth.Subject;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/UnauthenticatedSecurityContext_NullPrincipalOrName.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/UnauthenticatedSecurityContext_NullPrincipalOrName.java
index b7e770a..297de3f 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/UnauthenticatedSecurityContext_NullPrincipalOrName.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/UnauthenticatedSecurityContext_NullPrincipalOrName.java
@@ -18,7 +18,7 @@
 
 import org.glassfish.security.common.PrincipalImpl;
 
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.Callback;
 import javax.security.auth.Subject;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/UnsupportedWorkContext.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/UnsupportedWorkContext.java
index a2e715e..c6dcb31 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/UnsupportedWorkContext.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/UnsupportedWorkContext.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.WorkContext;
+import jakarta.resource.spi.work.WorkContext;
 
 public class UnsupportedWorkContext implements WorkContext {
     public String getName() {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/WorkDispatcher.java
index b9ef29f..c01c31e 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6-resources-xml/ra/src/connector/WorkDispatcher.java
@@ -20,12 +20,12 @@
 import org.glassfish.security.common.PrincipalImpl;
 
 import java.lang.reflect.Method;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.work.*;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.work.*;
 import javax.transaction.xa.Xid;
 
 /**
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/DeliveryWork.java
index 63076d3..658233e 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/DeliveryWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/JSR322Work.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/JSR322Work.java
index eda3858..5107ac1 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/JSR322Work.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/JSR322Work.java
@@ -16,9 +16,9 @@
 
 package connector;
 
-import javax.resource.spi.work.WorkContextProvider;
-import javax.resource.spi.work.WorkContext;
-import javax.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.work.WorkContextProvider;
+import jakarta.resource.spi.work.WorkContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
 import java.util.List;
 import java.util.ArrayList;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/MyAdminObject.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/MyAdminObject.java
index e8b7ef6..2b28d62 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/MyAdminObject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/MyAdminObject.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.*;
+import jakarta.resource.spi.*;
 
 public class MyAdminObject implements java.io.Serializable, ResourceAdapterAssociation {
 
@@ -59,7 +59,7 @@
     }
 
 
-    public void setResourceAdapter(ResourceAdapter ra) throws javax.resource.ResourceException{
+    public void setResourceAdapter(ResourceAdapter ra) throws jakarta.resource.ResourceException{
         this.resourceAdapter = ra;
     }
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/MyPlainSICWithGPC.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/MyPlainSICWithGPC.java
index c98bc54..7043a92 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/MyPlainSICWithGPC.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/MyPlainSICWithGPC.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import javax.security.auth.Subject;
 import javax.security.auth.message.callback.GroupPrincipalCallback;
 import javax.security.auth.callback.CallbackHandler;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/MyPlainSecurityContext.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/MyPlainSecurityContext.java
index 595daf8..d1dcc5d 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/MyPlainSecurityContext.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/MyPlainSecurityContext.java
@@ -25,7 +25,7 @@
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.Callback;
 import javax.security.auth.callback.UnsupportedCallbackException;
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import java.util.List;
 import java.util.ArrayList;
 import java.io.IOException;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/MySecurityContext.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/MySecurityContext.java
index 294cebf..b377185 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/MySecurityContext.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/MySecurityContext.java
@@ -24,7 +24,7 @@
 import javax.security.auth.message.callback.CallerPrincipalCallback;
 import javax.security.auth.message.callback.PasswordValidationCallback;
 import javax.security.auth.message.callback.GroupPrincipalCallback;
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import java.io.IOException;
 import java.util.List;
 import java.util.ArrayList;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/MySecurityContextWithListener.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/MySecurityContextWithListener.java
index b3decce..e64fdfe 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/MySecurityContextWithListener.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/MySecurityContextWithListener.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.WorkContextLifecycleListener;
+import jakarta.resource.spi.work.WorkContextLifecycleListener;
 
 
 public class MySecurityContextWithListener extends MySecurityContext implements WorkContextLifecycleListener {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/NestedWork_Child.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/NestedWork_Child.java
index 1428bca..ff23161 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/NestedWork_Child.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/NestedWork_Child.java
@@ -16,9 +16,9 @@
 
 package connector;
 
-import javax.resource.spi.work.*;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.XATerminator;
+import jakarta.resource.spi.work.*;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.XATerminator;
 import javax.transaction.xa.Xid;
 import java.util.List;
 import java.util.ArrayList;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/NestedWork_Parent.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/NestedWork_Parent.java
index 4e60c96..2cb8991 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/NestedWork_Parent.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/NestedWork_Parent.java
@@ -16,9 +16,9 @@
 
 package connector;
 
-import javax.resource.spi.work.*;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.XATerminator;
+import jakarta.resource.spi.work.*;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.XATerminator;
 import javax.transaction.xa.Xid;
 import java.util.List;
 import java.util.ArrayList;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/SimpleActivationSpec.java
index 56e8e32..8182ef5 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/SimpleActivationSpec.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
 
 /**
  * This class is supposed to implemented as a JavaBean
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/SimpleResourceAdapterImpl.java
index 8c4bfda..d07c4e9 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -19,20 +19,20 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Properties;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 import javax.naming.InitialContext;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/SinglePrincipalSIC.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/SinglePrincipalSIC.java
index ec502ef..87b408c 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/SinglePrincipalSIC.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/SinglePrincipalSIC.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.Callback;
 import javax.security.auth.Subject;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/UnauthenticatedIdentityOptWorkContext.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/UnauthenticatedIdentityOptWorkContext.java
index a7db1e2..24d47d9 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/UnauthenticatedIdentityOptWorkContext.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/UnauthenticatedIdentityOptWorkContext.java
@@ -23,7 +23,7 @@
 import javax.security.auth.callback.UnsupportedCallbackException;
 import javax.security.auth.Subject;
 import javax.security.auth.message.callback.CallerPrincipalCallback;
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import java.io.IOException;
 import java.util.List;
 import java.util.ArrayList;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/UnauthenticatedSecurityContext_EmptyExecutionSubject.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/UnauthenticatedSecurityContext_EmptyExecutionSubject.java
index cc18a13..a31916a 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/UnauthenticatedSecurityContext_EmptyExecutionSubject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/UnauthenticatedSecurityContext_EmptyExecutionSubject.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.Callback;
 import javax.security.auth.Subject;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/UnauthenticatedSecurityContext_NullPrincipalOrName.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/UnauthenticatedSecurityContext_NullPrincipalOrName.java
index b7e770a..297de3f 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/UnauthenticatedSecurityContext_NullPrincipalOrName.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/UnauthenticatedSecurityContext_NullPrincipalOrName.java
@@ -18,7 +18,7 @@
 
 import org.glassfish.security.common.PrincipalImpl;
 
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.Callback;
 import javax.security.auth.Subject;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/UnsupportedWorkContext.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/UnsupportedWorkContext.java
index a2e715e..c6dcb31 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/UnsupportedWorkContext.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/UnsupportedWorkContext.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.WorkContext;
+import jakarta.resource.spi.work.WorkContext;
 
 public class UnsupportedWorkContext implements WorkContext {
     public String getName() {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/WorkDispatcher.java
index bf001db..50af186 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/connector1.6/ra/src/connector/WorkDispatcher.java
@@ -20,12 +20,12 @@
 import org.glassfish.security.common.PrincipalImpl;
 
 import java.lang.reflect.Method;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.work.*;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.work.*;
 import javax.transaction.xa.Xid;
 
 /**
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/DeliveryWork.java
index 63076d3..658233e 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/DeliveryWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/MyWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/MyWork.java
index 226ca00..2ecec63 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/MyWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/MyWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/SimpleActivationSpec.java
index 0f915aa..946d987 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/SimpleActivationSpec.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
 
 /**
  * This class is supposed to implemented as a JavaBean
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/SimpleResourceAdapterImpl.java
index 1db4f21..58813b3 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -20,20 +20,20 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Properties;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/TestWMWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/TestWMWork.java
index 78fb0c4..7e585a3 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/TestWMWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/TestWMWork.java
@@ -18,13 +18,13 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.WorkException;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.WorkException;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/WorkDispatcher.java
index 44b1d39..34a604f 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource-standalone-rar/ra/src/connector/WorkDispatcher.java
@@ -18,15 +18,15 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 import javax.transaction.xa.Xid;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/DeliveryWork.java
index 63076d3..658233e 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/DeliveryWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/MyWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/MyWork.java
index 226ca00..2ecec63 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/MyWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/MyWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/SimpleActivationSpec.java
index 0f915aa..946d987 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/SimpleActivationSpec.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
 
 /**
  * This class is supposed to implemented as a JavaBean
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/SimpleResourceAdapterImpl.java
index 1db4f21..58813b3 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -20,20 +20,20 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Properties;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/TestWMWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/TestWMWork.java
index 78fb0c4..7e585a3 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/TestWMWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/TestWMWork.java
@@ -18,13 +18,13 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.WorkException;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.WorkException;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/WorkDispatcher.java
index 44b1d39..34a604f 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/defaultConnectorResource/ra/src/connector/WorkDispatcher.java
@@ -18,15 +18,15 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 import javax.transaction.xa.Xid;
 import javax.transaction.xa.XAException;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/ejb32-mdb/ra/CommandActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/v3/ejb32-mdb/ra/CommandActivationSpec.java
index 49522cc..e36aa1d 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/ejb32-mdb/ra/CommandActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/ejb32-mdb/ra/CommandActivationSpec.java
@@ -16,9 +16,9 @@
 
 package com.sun.s1asdev.ejb.ejb32.mdb.ra;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.InvalidPropertyException;
-import javax.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.InvalidPropertyException;
+import jakarta.resource.spi.ResourceAdapter;
 
 /**
  * @author David Blevins
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/ejb32-mdb/ra/CommandResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/v3/ejb32-mdb/ra/CommandResourceAdapter.java
index eb798fd..0ed9298 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/ejb32-mdb/ra/CommandResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/ejb32-mdb/ra/CommandResourceAdapter.java
@@ -16,13 +16,13 @@
 
 package com.sun.s1asdev.ejb.ejb32.mdb.ra;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
 import javax.transaction.xa.XAResource;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
index 2700adc..70029f1 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
@@ -22,7 +22,7 @@
 import java.util.StringTokenizer;
 import java.util.Enumeration;
 import com.sun.jdbcra.util.MethodExecutor;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
index e6f751b..ac7e748 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
@@ -16,11 +16,11 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.ConnectionManager;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import java.sql.DriverManager;
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
@@ -37,14 +37,14 @@
  * @author	Evani Sai Surya Kiran
  */
 
-public abstract class ManagedConnectionFactory implements javax.resource.spi.ManagedConnectionFactory, 
+public abstract class ManagedConnectionFactory implements jakarta.resource.spi.ManagedConnectionFactory, 
     java.io.Serializable {
     
     protected DataSourceSpec spec = new DataSourceSpec();
     protected transient DataSourceObjectBuilder dsObjBuilder;
     
     protected java.io.PrintWriter logWriter = null;
-    protected javax.resource.spi.ResourceAdapter ra = null;
+    protected jakarta.resource.spi.ResourceAdapter ra = null;
     
     private static Logger _logger;
     static {
@@ -62,7 +62,7 @@
             logWriter.println("In createConnectionFactory()");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, null);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, null);
         
         return cf;
     }
@@ -74,12 +74,12 @@
      * @param	cxManager	<code>ConnectionManager</code> passed by the application server
      * @return	Generic JDBC Connector implementation of <code>javax.sql.DataSource</code>
      */
-    public Object createConnectionFactory(javax.resource.spi.ConnectionManager cxManager) {
+    public Object createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager) {
         if(logWriter != null) {
-            logWriter.println("In createConnectionFactory(javax.resource.spi.ConnectionManager cxManager)");
+            logWriter.println("In createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager)");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, cxManager);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, cxManager);
         return cf; 
     }
     
@@ -100,7 +100,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public abstract javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public abstract jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException;
     
     /**
@@ -130,7 +130,7 @@
      * @return	<code>ResourceAdapter</code> associated with this <code>ManagedConnectionFactory</code> instance
      * @see	<code>setResourceAdapter</code>
      */
-    public javax.resource.spi.ResourceAdapter getResourceAdapter() {
+    public jakarta.resource.spi.ResourceAdapter getResourceAdapter() {
         if(logWriter != null) {
             logWriter.println("In getResourceAdapter");
         }
@@ -164,7 +164,7 @@
      *					parameter or the <code>Set</code> of <code>ManagedConnection</code>
      *					objects passed by the application server
      */
-    public javax.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
+    public jakarta.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
         javax.security.auth.Subject subject, ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In matchManagedConnections");
@@ -459,7 +459,7 @@
      *			<code>ManagedConnectionFactory</code> instance
      * @see	<code>getResourceAdapter</code>
      */
-    public void setResourceAdapter(javax.resource.spi.ResourceAdapter ra) {
+    public void setResourceAdapter(jakarta.resource.spi.ResourceAdapter ra) {
         this.ra = ra;   
     }
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
index 0ebd31f..555be77 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
@@ -16,12 +16,12 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.NotSupportedException;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.NotSupportedException;
 import javax.transaction.xa.XAResource;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapterInternalException;
 
 /**
  * <code>ResourceAdapter</code> implementation for Generic JDBC Connector.
@@ -29,7 +29,7 @@
  * @version	1.0, 02/08/05
  * @author	Evani Sai Surya Kiran
  */
-public class ResourceAdapter implements javax.resource.spi.ResourceAdapter {
+public class ResourceAdapter implements jakarta.resource.spi.ResourceAdapter {
 
     public String raProp = null;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/ConnectionManager.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
index 688e0fc..b219cd2 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
@@ -16,10 +16,10 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 
 /**
  * ConnectionManager implementation for Generic JDBC Connector.
@@ -27,7 +27,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionManager implements javax.resource.spi.ConnectionManager{ 
+public class ConnectionManager implements jakarta.resource.spi.ConnectionManager{ 
 
     /**
      * Returns a <code>Connection </code> object to the <code>ConnectionFactory</code>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
index 997c7b1..39c7876 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
@@ -22,7 +22,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionRequestInfo implements javax.resource.spi.ConnectionRequestInfo{ 
+public class ConnectionRequestInfo implements jakarta.resource.spi.ConnectionRequestInfo{ 
 
     private String user;
     private String password;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
index bd95b5d..a9fa5f1 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
@@ -16,13 +16,13 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.ConnectionManager;
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import com.sun.jdbcra.spi.ManagedConnectionFactory;
 import com.sun.jdbcra.common.DataSourceSpec;
 import java.util.logging.Logger;
@@ -62,7 +62,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In createManagedConnection");
@@ -79,7 +79,7 @@
                 dataSourceObj = (javax.sql.DataSource) dsObjBuilder.constructDataSourceObject();
             } catch(ClassCastException cce) {
 	        _logger.log(Level.SEVERE, "jdbc.exc_cce", cce);
-                throw new javax.resource.ResourceException(cce.getMessage());
+                throw new jakarta.resource.ResourceException(cce.getMessage());
             }
         }
         
@@ -100,7 +100,7 @@
         } catch(java.sql.SQLException sqle) {
             sqle.printStackTrace();
 	    _logger.log(Level.WARNING, "jdbc.exc_create_conn", sqle);
-            throw new javax.resource.spi.ResourceAllocationException("The connection could not be allocated: " + 
+            throw new jakarta.resource.spi.ResourceAllocationException("The connection could not be allocated: " + 
                 sqle.getMessage());
         } catch(Exception e){
             System.out.println("V3-TEST : unable to get connection");
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/DataSource.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/DataSource.java
index 150a03e..d90085d 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/DataSource.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/DataSource.java
@@ -20,9 +20,9 @@
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.sql.SQLFeatureNotSupportedException;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.ResourceException;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.ResourceException;
 import javax.naming.Reference;
 
 import java.util.logging.Logger;
@@ -35,7 +35,7 @@
  * @author	Binod P.G
  */
 public class DataSource implements javax.sql.DataSource, java.io.Serializable,
-		com.sun.appserv.jdbcra.DataSource, javax.resource.Referenceable{ 
+		com.sun.appserv.jdbcra.DataSource, jakarta.resource.Referenceable{ 
 				   
     private ManagedConnectionFactory mcf;
     private ConnectionManager cm;				   				   
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/LocalTransaction.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
index 24ae3c7..8ebe057 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
@@ -17,8 +17,8 @@
 package com.sun.jdbcra.spi;
 
 import com.sun.jdbcra.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.LocalTransactionException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.LocalTransactionException;
 
 /**
  * <code>LocalTransaction</code> implementation for Generic JDBC Connector.
@@ -26,7 +26,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class LocalTransaction implements javax.resource.spi.LocalTransaction {
+public class LocalTransaction implements jakarta.resource.spi.LocalTransaction {
     
     private ManagedConnection mc;
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/ManagedConnection.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
index 29e75a6..30f460a 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
@@ -16,8 +16,8 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.*;
-import javax.resource.*;
+import jakarta.resource.spi.*;
+import jakarta.resource.*;
 import javax.security.auth.Subject;
 import java.io.PrintWriter;
 import javax.transaction.xa.XAResource;
@@ -28,8 +28,8 @@
 import javax.sql.XAConnection;
 import java.sql.Connection;
 import java.sql.SQLException;
-import javax.resource.NotSupportedException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.spi.security.PasswordCredential;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.LocalTransaction;
 import com.sun.jdbcra.spi.ManagedConnectionMetaData;
@@ -44,7 +44,7 @@
  * @version	1.0, 02/07/22
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnection implements javax.resource.spi.ManagedConnection {
+public class ManagedConnection implements jakarta.resource.spi.ManagedConnection {
 
     public static final int ISNOTAPOOLEDCONNECTION = 0;
     public static final int ISPOOLEDCONNECTION = 1;
@@ -59,7 +59,7 @@
     private Hashtable connectionHandles;
     private PrintWriter logWriter;
     private PasswordCredential passwdCredential;
-    private javax.resource.spi.ManagedConnectionFactory mcf = null;
+    private jakarta.resource.spi.ManagedConnectionFactory mcf = null;
     private XAResource xar = null;
     public ConnectionHolder activeConnectionHandle;
     
@@ -100,7 +100,7 @@
      *					object passed
      */
     public ManagedConnection(PooledConnection pooledConn, java.sql.Connection sqlConn, 
-        PasswordCredential passwdCred, javax.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
+        PasswordCredential passwdCred, jakarta.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
         if(pooledConn == null && sqlConn == null) {
             throw new ResourceException("Connection object cannot be null");
         }
@@ -276,7 +276,7 @@
      * @throws	SecurityException	if there is a mismatch between the
      *        	                 	password credentials or reauthentication is requested
      */
-    public Object getConnection(Subject sub, javax.resource.spi.ConnectionRequestInfo cxReqInfo) 
+    public Object getConnection(Subject sub, jakarta.resource.spi.ConnectionRequestInfo cxReqInfo) 
         throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getConnection");
@@ -286,7 +286,7 @@
         PasswordCredential passwdCred = SecurityUtils.getPasswordCredential(this.mcf, sub, cxRequestInfo);
             
         if(SecurityUtils.isPasswordCredentialEqual(this.passwdCredential, passwdCred) == false) {
-            throw new javax.resource.spi.SecurityException("Re-authentication not supported");
+            throw new jakarta.resource.spi.SecurityException("Re-authentication not supported");
         }
         
         //GJCINT
@@ -324,7 +324,7 @@
      * @return	<code>LocalTransaction</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
+    public jakarta.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getLocalTransaction");
         }
@@ -356,7 +356,7 @@
      * @return	<code>ManagedConnectionMetaData</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
+    public jakarta.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In getMetaData");
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
index 78537a9..20f03aa 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
@@ -18,7 +18,7 @@
 
 import com.sun.jdbcra.spi.ManagedConnection;
 import java.sql.SQLException;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
@@ -28,7 +28,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnectionMetaData implements javax.resource.spi.ManagedConnectionMetaData {
+public class ManagedConnectionMetaData implements jakarta.resource.spi.ManagedConnectionMetaData {
 
     private java.sql.DatabaseMetaData dmd = null;
     private ManagedConnection mc;
@@ -111,7 +111,7 @@
      * @throws	<code>ResourceException</code>
      */
     public String getUserName() throws ResourceException {
-        javax.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
+        jakarta.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
         if(pc != null) {
             return pc.getUserName();
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/util/MethodExecutor.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/util/MethodExecutor.java
index cbf597b..ce321af 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/util/MethodExecutor.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/util/MethodExecutor.java
@@ -19,7 +19,7 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.InvocationTargetException;
 import java.util.Vector;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/util/SecurityUtils.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/util/SecurityUtils.java
index 6405c61..fc149bf 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/util/SecurityUtils.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb-resources-xml/ra/src/com/sun/jdbcra/util/SecurityUtils.java
@@ -19,9 +19,9 @@
 import javax.security.auth.Subject;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import javax.resource.spi.security.PasswordCredential;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import java.util.Set;
 import java.util.Iterator;
@@ -56,7 +56,7 @@
      * @throws	<code>SecurityException</code>	if access to the <code>Subject</code> instance is denied
      */
     public static PasswordCredential getPasswordCredential(final ManagedConnectionFactory mcf,
-         final Subject subject, javax.resource.spi.ConnectionRequestInfo info) throws ResourceException {
+         final Subject subject, jakarta.resource.spi.ConnectionRequestInfo info) throws ResourceException {
 
 	if (info == null) {
             if (subject == null) {
@@ -77,7 +77,7 @@
                         }
                     });
                 if (pc == null) {
-                    throw new javax.resource.spi.SecurityException("No PasswordCredential found");
+                    throw new jakarta.resource.spi.SecurityException("No PasswordCredential found");
                 } else {
                     return pc;
                 }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
index 2700adc..70029f1 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
@@ -22,7 +22,7 @@
 import java.util.StringTokenizer;
 import java.util.Enumeration;
 import com.sun.jdbcra.util.MethodExecutor;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
index e6f751b..ac7e748 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
@@ -16,11 +16,11 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.ConnectionManager;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import java.sql.DriverManager;
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
@@ -37,14 +37,14 @@
  * @author	Evani Sai Surya Kiran
  */
 
-public abstract class ManagedConnectionFactory implements javax.resource.spi.ManagedConnectionFactory, 
+public abstract class ManagedConnectionFactory implements jakarta.resource.spi.ManagedConnectionFactory, 
     java.io.Serializable {
     
     protected DataSourceSpec spec = new DataSourceSpec();
     protected transient DataSourceObjectBuilder dsObjBuilder;
     
     protected java.io.PrintWriter logWriter = null;
-    protected javax.resource.spi.ResourceAdapter ra = null;
+    protected jakarta.resource.spi.ResourceAdapter ra = null;
     
     private static Logger _logger;
     static {
@@ -62,7 +62,7 @@
             logWriter.println("In createConnectionFactory()");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, null);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, null);
         
         return cf;
     }
@@ -74,12 +74,12 @@
      * @param	cxManager	<code>ConnectionManager</code> passed by the application server
      * @return	Generic JDBC Connector implementation of <code>javax.sql.DataSource</code>
      */
-    public Object createConnectionFactory(javax.resource.spi.ConnectionManager cxManager) {
+    public Object createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager) {
         if(logWriter != null) {
-            logWriter.println("In createConnectionFactory(javax.resource.spi.ConnectionManager cxManager)");
+            logWriter.println("In createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager)");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, cxManager);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, cxManager);
         return cf; 
     }
     
@@ -100,7 +100,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public abstract javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public abstract jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException;
     
     /**
@@ -130,7 +130,7 @@
      * @return	<code>ResourceAdapter</code> associated with this <code>ManagedConnectionFactory</code> instance
      * @see	<code>setResourceAdapter</code>
      */
-    public javax.resource.spi.ResourceAdapter getResourceAdapter() {
+    public jakarta.resource.spi.ResourceAdapter getResourceAdapter() {
         if(logWriter != null) {
             logWriter.println("In getResourceAdapter");
         }
@@ -164,7 +164,7 @@
      *					parameter or the <code>Set</code> of <code>ManagedConnection</code>
      *					objects passed by the application server
      */
-    public javax.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
+    public jakarta.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
         javax.security.auth.Subject subject, ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In matchManagedConnections");
@@ -459,7 +459,7 @@
      *			<code>ManagedConnectionFactory</code> instance
      * @see	<code>getResourceAdapter</code>
      */
-    public void setResourceAdapter(javax.resource.spi.ResourceAdapter ra) {
+    public void setResourceAdapter(jakarta.resource.spi.ResourceAdapter ra) {
         this.ra = ra;   
     }
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
index 0ebd31f..555be77 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
@@ -16,12 +16,12 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.NotSupportedException;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.NotSupportedException;
 import javax.transaction.xa.XAResource;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapterInternalException;
 
 /**
  * <code>ResourceAdapter</code> implementation for Generic JDBC Connector.
@@ -29,7 +29,7 @@
  * @version	1.0, 02/08/05
  * @author	Evani Sai Surya Kiran
  */
-public class ResourceAdapter implements javax.resource.spi.ResourceAdapter {
+public class ResourceAdapter implements jakarta.resource.spi.ResourceAdapter {
 
     public String raProp = null;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionManager.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
index 688e0fc..b219cd2 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
@@ -16,10 +16,10 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 
 /**
  * ConnectionManager implementation for Generic JDBC Connector.
@@ -27,7 +27,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionManager implements javax.resource.spi.ConnectionManager{ 
+public class ConnectionManager implements jakarta.resource.spi.ConnectionManager{ 
 
     /**
      * Returns a <code>Connection </code> object to the <code>ConnectionFactory</code>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
index 997c7b1..39c7876 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
@@ -22,7 +22,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionRequestInfo implements javax.resource.spi.ConnectionRequestInfo{ 
+public class ConnectionRequestInfo implements jakarta.resource.spi.ConnectionRequestInfo{ 
 
     private String user;
     private String password;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
index bd95b5d..a9fa5f1 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
@@ -16,13 +16,13 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.ConnectionManager;
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import com.sun.jdbcra.spi.ManagedConnectionFactory;
 import com.sun.jdbcra.common.DataSourceSpec;
 import java.util.logging.Logger;
@@ -62,7 +62,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In createManagedConnection");
@@ -79,7 +79,7 @@
                 dataSourceObj = (javax.sql.DataSource) dsObjBuilder.constructDataSourceObject();
             } catch(ClassCastException cce) {
 	        _logger.log(Level.SEVERE, "jdbc.exc_cce", cce);
-                throw new javax.resource.ResourceException(cce.getMessage());
+                throw new jakarta.resource.ResourceException(cce.getMessage());
             }
         }
         
@@ -100,7 +100,7 @@
         } catch(java.sql.SQLException sqle) {
             sqle.printStackTrace();
 	    _logger.log(Level.WARNING, "jdbc.exc_create_conn", sqle);
-            throw new javax.resource.spi.ResourceAllocationException("The connection could not be allocated: " + 
+            throw new jakarta.resource.spi.ResourceAllocationException("The connection could not be allocated: " + 
                 sqle.getMessage());
         } catch(Exception e){
             System.out.println("V3-TEST : unable to get connection");
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/DataSource.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/DataSource.java
index 150a03e..d90085d 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/DataSource.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/DataSource.java
@@ -20,9 +20,9 @@
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.sql.SQLFeatureNotSupportedException;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.ResourceException;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.ResourceException;
 import javax.naming.Reference;
 
 import java.util.logging.Logger;
@@ -35,7 +35,7 @@
  * @author	Binod P.G
  */
 public class DataSource implements javax.sql.DataSource, java.io.Serializable,
-		com.sun.appserv.jdbcra.DataSource, javax.resource.Referenceable{ 
+		com.sun.appserv.jdbcra.DataSource, jakarta.resource.Referenceable{ 
 				   
     private ManagedConnectionFactory mcf;
     private ConnectionManager cm;				   				   
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/LocalTransaction.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
index 24ae3c7..8ebe057 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
@@ -17,8 +17,8 @@
 package com.sun.jdbcra.spi;
 
 import com.sun.jdbcra.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.LocalTransactionException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.LocalTransactionException;
 
 /**
  * <code>LocalTransaction</code> implementation for Generic JDBC Connector.
@@ -26,7 +26,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class LocalTransaction implements javax.resource.spi.LocalTransaction {
+public class LocalTransaction implements jakarta.resource.spi.LocalTransaction {
     
     private ManagedConnection mc;
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnection.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
index 29e75a6..30f460a 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
@@ -16,8 +16,8 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.*;
-import javax.resource.*;
+import jakarta.resource.spi.*;
+import jakarta.resource.*;
 import javax.security.auth.Subject;
 import java.io.PrintWriter;
 import javax.transaction.xa.XAResource;
@@ -28,8 +28,8 @@
 import javax.sql.XAConnection;
 import java.sql.Connection;
 import java.sql.SQLException;
-import javax.resource.NotSupportedException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.spi.security.PasswordCredential;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.LocalTransaction;
 import com.sun.jdbcra.spi.ManagedConnectionMetaData;
@@ -44,7 +44,7 @@
  * @version	1.0, 02/07/22
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnection implements javax.resource.spi.ManagedConnection {
+public class ManagedConnection implements jakarta.resource.spi.ManagedConnection {
 
     public static final int ISNOTAPOOLEDCONNECTION = 0;
     public static final int ISPOOLEDCONNECTION = 1;
@@ -59,7 +59,7 @@
     private Hashtable connectionHandles;
     private PrintWriter logWriter;
     private PasswordCredential passwdCredential;
-    private javax.resource.spi.ManagedConnectionFactory mcf = null;
+    private jakarta.resource.spi.ManagedConnectionFactory mcf = null;
     private XAResource xar = null;
     public ConnectionHolder activeConnectionHandle;
     
@@ -100,7 +100,7 @@
      *					object passed
      */
     public ManagedConnection(PooledConnection pooledConn, java.sql.Connection sqlConn, 
-        PasswordCredential passwdCred, javax.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
+        PasswordCredential passwdCred, jakarta.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
         if(pooledConn == null && sqlConn == null) {
             throw new ResourceException("Connection object cannot be null");
         }
@@ -276,7 +276,7 @@
      * @throws	SecurityException	if there is a mismatch between the
      *        	                 	password credentials or reauthentication is requested
      */
-    public Object getConnection(Subject sub, javax.resource.spi.ConnectionRequestInfo cxReqInfo) 
+    public Object getConnection(Subject sub, jakarta.resource.spi.ConnectionRequestInfo cxReqInfo) 
         throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getConnection");
@@ -286,7 +286,7 @@
         PasswordCredential passwdCred = SecurityUtils.getPasswordCredential(this.mcf, sub, cxRequestInfo);
             
         if(SecurityUtils.isPasswordCredentialEqual(this.passwdCredential, passwdCred) == false) {
-            throw new javax.resource.spi.SecurityException("Re-authentication not supported");
+            throw new jakarta.resource.spi.SecurityException("Re-authentication not supported");
         }
         
         //GJCINT
@@ -324,7 +324,7 @@
      * @return	<code>LocalTransaction</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
+    public jakarta.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getLocalTransaction");
         }
@@ -356,7 +356,7 @@
      * @return	<code>ManagedConnectionMetaData</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
+    public jakarta.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In getMetaData");
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
index 78537a9..20f03aa 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
@@ -18,7 +18,7 @@
 
 import com.sun.jdbcra.spi.ManagedConnection;
 import java.sql.SQLException;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
@@ -28,7 +28,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnectionMetaData implements javax.resource.spi.ManagedConnectionMetaData {
+public class ManagedConnectionMetaData implements jakarta.resource.spi.ManagedConnectionMetaData {
 
     private java.sql.DatabaseMetaData dmd = null;
     private ManagedConnection mc;
@@ -111,7 +111,7 @@
      * @throws	<code>ResourceException</code>
      */
     public String getUserName() throws ResourceException {
-        javax.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
+        jakarta.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
         if(pc != null) {
             return pc.getUserName();
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/util/MethodExecutor.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/util/MethodExecutor.java
index cbf597b..ce321af 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/util/MethodExecutor.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/util/MethodExecutor.java
@@ -19,7 +19,7 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.InvocationTargetException;
 import java.util.Vector;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/util/SecurityUtils.java b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/util/SecurityUtils.java
index 6405c61..fc149bf 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/util/SecurityUtils.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/embeddedweb/ra/src/com/sun/jdbcra/util/SecurityUtils.java
@@ -19,9 +19,9 @@
 import javax.security.auth.Subject;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import javax.resource.spi.security.PasswordCredential;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import java.util.Set;
 import java.util.Iterator;
@@ -56,7 +56,7 @@
      * @throws	<code>SecurityException</code>	if access to the <code>Subject</code> instance is denied
      */
     public static PasswordCredential getPasswordCredential(final ManagedConnectionFactory mcf,
-         final Subject subject, javax.resource.spi.ConnectionRequestInfo info) throws ResourceException {
+         final Subject subject, jakarta.resource.spi.ConnectionRequestInfo info) throws ResourceException {
 
 	if (info == null) {
             if (subject == null) {
@@ -77,7 +77,7 @@
                         }
                     });
                 if (pc == null) {
-                    throw new javax.resource.spi.SecurityException("No PasswordCredential found");
+                    throw new jakarta.resource.spi.SecurityException("No PasswordCredential found");
                 } else {
                     return pc;
                 }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
index 9efb07c..c2822e2 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
@@ -22,7 +22,7 @@
 import java.util.StringTokenizer;
 import java.util.Enumeration;
 import com.sun.jdbcra.util.MethodExecutor;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
index e6f751b..ac7e748 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
@@ -16,11 +16,11 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.ConnectionManager;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import java.sql.DriverManager;
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
@@ -37,14 +37,14 @@
  * @author	Evani Sai Surya Kiran
  */
 
-public abstract class ManagedConnectionFactory implements javax.resource.spi.ManagedConnectionFactory, 
+public abstract class ManagedConnectionFactory implements jakarta.resource.spi.ManagedConnectionFactory, 
     java.io.Serializable {
     
     protected DataSourceSpec spec = new DataSourceSpec();
     protected transient DataSourceObjectBuilder dsObjBuilder;
     
     protected java.io.PrintWriter logWriter = null;
-    protected javax.resource.spi.ResourceAdapter ra = null;
+    protected jakarta.resource.spi.ResourceAdapter ra = null;
     
     private static Logger _logger;
     static {
@@ -62,7 +62,7 @@
             logWriter.println("In createConnectionFactory()");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, null);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, null);
         
         return cf;
     }
@@ -74,12 +74,12 @@
      * @param	cxManager	<code>ConnectionManager</code> passed by the application server
      * @return	Generic JDBC Connector implementation of <code>javax.sql.DataSource</code>
      */
-    public Object createConnectionFactory(javax.resource.spi.ConnectionManager cxManager) {
+    public Object createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager) {
         if(logWriter != null) {
-            logWriter.println("In createConnectionFactory(javax.resource.spi.ConnectionManager cxManager)");
+            logWriter.println("In createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager)");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, cxManager);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, cxManager);
         return cf; 
     }
     
@@ -100,7 +100,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public abstract javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public abstract jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException;
     
     /**
@@ -130,7 +130,7 @@
      * @return	<code>ResourceAdapter</code> associated with this <code>ManagedConnectionFactory</code> instance
      * @see	<code>setResourceAdapter</code>
      */
-    public javax.resource.spi.ResourceAdapter getResourceAdapter() {
+    public jakarta.resource.spi.ResourceAdapter getResourceAdapter() {
         if(logWriter != null) {
             logWriter.println("In getResourceAdapter");
         }
@@ -164,7 +164,7 @@
      *					parameter or the <code>Set</code> of <code>ManagedConnection</code>
      *					objects passed by the application server
      */
-    public javax.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
+    public jakarta.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
         javax.security.auth.Subject subject, ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In matchManagedConnections");
@@ -459,7 +459,7 @@
      *			<code>ManagedConnectionFactory</code> instance
      * @see	<code>getResourceAdapter</code>
      */
-    public void setResourceAdapter(javax.resource.spi.ResourceAdapter ra) {
+    public void setResourceAdapter(jakarta.resource.spi.ResourceAdapter ra) {
         this.ra = ra;   
     }
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
index a4bd6d7..e60338f 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
@@ -16,12 +16,12 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.NotSupportedException;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.NotSupportedException;
 import javax.transaction.xa.XAResource;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapterInternalException;
 
 /**
  * <code>ResourceAdapter</code> implementation for Generic JDBC Connector.
@@ -29,7 +29,7 @@
  * @version	1.0, 02/08/05
  * @author	Evani Sai Surya Kiran
  */
-public class ResourceAdapter implements javax.resource.spi.ResourceAdapter {
+public class ResourceAdapter implements jakarta.resource.spi.ResourceAdapter {
 public static final int VERSION = 2;
     public String raProp = null;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/ConnectionManager.java b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
index 688e0fc..b219cd2 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
@@ -16,10 +16,10 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 
 /**
  * ConnectionManager implementation for Generic JDBC Connector.
@@ -27,7 +27,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionManager implements javax.resource.spi.ConnectionManager{ 
+public class ConnectionManager implements jakarta.resource.spi.ConnectionManager{ 
 
     /**
      * Returns a <code>Connection </code> object to the <code>ConnectionFactory</code>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
index 997c7b1..39c7876 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
@@ -22,7 +22,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionRequestInfo implements javax.resource.spi.ConnectionRequestInfo{ 
+public class ConnectionRequestInfo implements jakarta.resource.spi.ConnectionRequestInfo{ 
 
     private String user;
     private String password;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
index 4e4ab3d..411b73f 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
@@ -16,13 +16,13 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.ConnectionManager;
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import com.sun.jdbcra.spi.ManagedConnectionFactory;
 import com.sun.jdbcra.common.DataSourceSpec;
 import java.util.logging.Logger;
@@ -62,7 +62,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In createManagedConnection");
@@ -78,7 +78,7 @@
                 dataSourceObj = (javax.sql.DataSource) dsObjBuilder.constructDataSourceObject();
             } catch(ClassCastException cce) {
 	        _logger.log(Level.SEVERE, "jdbc.exc_cce", cce);
-                throw new javax.resource.ResourceException(cce.getMessage());
+                throw new jakarta.resource.ResourceException(cce.getMessage());
             }
         }
         
@@ -98,7 +98,7 @@
 	    }
         } catch(java.sql.SQLException sqle) {
 	    _logger.log(Level.WARNING, "jdbc.exc_create_conn", sqle);
-            throw new javax.resource.spi.ResourceAllocationException("The connection could not be allocated: " + 
+            throw new jakarta.resource.spi.ResourceAllocationException("The connection could not be allocated: " + 
                 sqle.getMessage());
         }
         
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/DataSource.java b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/DataSource.java
index 8d0d0a1..2068430 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/DataSource.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/DataSource.java
@@ -20,9 +20,9 @@
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.sql.SQLFeatureNotSupportedException;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.ResourceException;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.ResourceException;
 import javax.naming.Reference;
 
 import java.util.logging.Logger;
@@ -35,7 +35,7 @@
  * @author	Binod P.G
  */
 public class DataSource implements javax.sql.DataSource, java.io.Serializable,
-		com.sun.appserv.jdbcra.DataSource, javax.resource.Referenceable{ 
+		com.sun.appserv.jdbcra.DataSource, jakarta.resource.Referenceable{ 
 				   
     private ManagedConnectionFactory mcf;
     private ConnectionManager cm;				   				   
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/LocalTransaction.java b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
index 24ae3c7..8ebe057 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
@@ -17,8 +17,8 @@
 package com.sun.jdbcra.spi;
 
 import com.sun.jdbcra.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.LocalTransactionException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.LocalTransactionException;
 
 /**
  * <code>LocalTransaction</code> implementation for Generic JDBC Connector.
@@ -26,7 +26,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class LocalTransaction implements javax.resource.spi.LocalTransaction {
+public class LocalTransaction implements jakarta.resource.spi.LocalTransaction {
     
     private ManagedConnection mc;
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/ManagedConnection.java b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
index 29e75a6..30f460a 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
@@ -16,8 +16,8 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.*;
-import javax.resource.*;
+import jakarta.resource.spi.*;
+import jakarta.resource.*;
 import javax.security.auth.Subject;
 import java.io.PrintWriter;
 import javax.transaction.xa.XAResource;
@@ -28,8 +28,8 @@
 import javax.sql.XAConnection;
 import java.sql.Connection;
 import java.sql.SQLException;
-import javax.resource.NotSupportedException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.spi.security.PasswordCredential;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.LocalTransaction;
 import com.sun.jdbcra.spi.ManagedConnectionMetaData;
@@ -44,7 +44,7 @@
  * @version	1.0, 02/07/22
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnection implements javax.resource.spi.ManagedConnection {
+public class ManagedConnection implements jakarta.resource.spi.ManagedConnection {
 
     public static final int ISNOTAPOOLEDCONNECTION = 0;
     public static final int ISPOOLEDCONNECTION = 1;
@@ -59,7 +59,7 @@
     private Hashtable connectionHandles;
     private PrintWriter logWriter;
     private PasswordCredential passwdCredential;
-    private javax.resource.spi.ManagedConnectionFactory mcf = null;
+    private jakarta.resource.spi.ManagedConnectionFactory mcf = null;
     private XAResource xar = null;
     public ConnectionHolder activeConnectionHandle;
     
@@ -100,7 +100,7 @@
      *					object passed
      */
     public ManagedConnection(PooledConnection pooledConn, java.sql.Connection sqlConn, 
-        PasswordCredential passwdCred, javax.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
+        PasswordCredential passwdCred, jakarta.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
         if(pooledConn == null && sqlConn == null) {
             throw new ResourceException("Connection object cannot be null");
         }
@@ -276,7 +276,7 @@
      * @throws	SecurityException	if there is a mismatch between the
      *        	                 	password credentials or reauthentication is requested
      */
-    public Object getConnection(Subject sub, javax.resource.spi.ConnectionRequestInfo cxReqInfo) 
+    public Object getConnection(Subject sub, jakarta.resource.spi.ConnectionRequestInfo cxReqInfo) 
         throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getConnection");
@@ -286,7 +286,7 @@
         PasswordCredential passwdCred = SecurityUtils.getPasswordCredential(this.mcf, sub, cxRequestInfo);
             
         if(SecurityUtils.isPasswordCredentialEqual(this.passwdCredential, passwdCred) == false) {
-            throw new javax.resource.spi.SecurityException("Re-authentication not supported");
+            throw new jakarta.resource.spi.SecurityException("Re-authentication not supported");
         }
         
         //GJCINT
@@ -324,7 +324,7 @@
      * @return	<code>LocalTransaction</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
+    public jakarta.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getLocalTransaction");
         }
@@ -356,7 +356,7 @@
      * @return	<code>ManagedConnectionMetaData</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
+    public jakarta.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In getMetaData");
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
index 78537a9..20f03aa 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
@@ -18,7 +18,7 @@
 
 import com.sun.jdbcra.spi.ManagedConnection;
 import java.sql.SQLException;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
@@ -28,7 +28,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnectionMetaData implements javax.resource.spi.ManagedConnectionMetaData {
+public class ManagedConnectionMetaData implements jakarta.resource.spi.ManagedConnectionMetaData {
 
     private java.sql.DatabaseMetaData dmd = null;
     private ManagedConnection mc;
@@ -111,7 +111,7 @@
      * @throws	<code>ResourceException</code>
      */
     public String getUserName() throws ResourceException {
-        javax.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
+        jakarta.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
         if(pc != null) {
             return pc.getUserName();
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/util/MethodExecutor.java b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/util/MethodExecutor.java
index cbf597b..ce321af 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/util/MethodExecutor.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/util/MethodExecutor.java
@@ -19,7 +19,7 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.InvocationTargetException;
 import java.util.Vector;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/util/SecurityUtils.java b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/util/SecurityUtils.java
index 6405c61..fc149bf 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/util/SecurityUtils.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/force-deploy-rar/ra/src/com/sun/jdbcra/util/SecurityUtils.java
@@ -19,9 +19,9 @@
 import javax.security.auth.Subject;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import javax.resource.spi.security.PasswordCredential;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import java.util.Set;
 import java.util.Iterator;
@@ -56,7 +56,7 @@
      * @throws	<code>SecurityException</code>	if access to the <code>Subject</code> instance is denied
      */
     public static PasswordCredential getPasswordCredential(final ManagedConnectionFactory mcf,
-         final Subject subject, javax.resource.spi.ConnectionRequestInfo info) throws ResourceException {
+         final Subject subject, jakarta.resource.spi.ConnectionRequestInfo info) throws ResourceException {
 
 	if (info == null) {
             if (subject == null) {
@@ -77,7 +77,7 @@
                         }
                     });
                 if (pc == null) {
-                    throw new javax.resource.spi.SecurityException("No PasswordCredential found");
+                    throw new jakarta.resource.spi.SecurityException("No PasswordCredential found");
                 } else {
                     return pc;
                 }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
index 2700adc..70029f1 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
@@ -22,7 +22,7 @@
 import java.util.StringTokenizer;
 import java.util.Enumeration;
 import com.sun.jdbcra.util.MethodExecutor;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
index e6f751b..ac7e748 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
@@ -16,11 +16,11 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.ConnectionManager;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import java.sql.DriverManager;
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
@@ -37,14 +37,14 @@
  * @author	Evani Sai Surya Kiran
  */
 
-public abstract class ManagedConnectionFactory implements javax.resource.spi.ManagedConnectionFactory, 
+public abstract class ManagedConnectionFactory implements jakarta.resource.spi.ManagedConnectionFactory, 
     java.io.Serializable {
     
     protected DataSourceSpec spec = new DataSourceSpec();
     protected transient DataSourceObjectBuilder dsObjBuilder;
     
     protected java.io.PrintWriter logWriter = null;
-    protected javax.resource.spi.ResourceAdapter ra = null;
+    protected jakarta.resource.spi.ResourceAdapter ra = null;
     
     private static Logger _logger;
     static {
@@ -62,7 +62,7 @@
             logWriter.println("In createConnectionFactory()");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, null);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, null);
         
         return cf;
     }
@@ -74,12 +74,12 @@
      * @param	cxManager	<code>ConnectionManager</code> passed by the application server
      * @return	Generic JDBC Connector implementation of <code>javax.sql.DataSource</code>
      */
-    public Object createConnectionFactory(javax.resource.spi.ConnectionManager cxManager) {
+    public Object createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager) {
         if(logWriter != null) {
-            logWriter.println("In createConnectionFactory(javax.resource.spi.ConnectionManager cxManager)");
+            logWriter.println("In createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager)");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, cxManager);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, cxManager);
         return cf; 
     }
     
@@ -100,7 +100,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public abstract javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public abstract jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException;
     
     /**
@@ -130,7 +130,7 @@
      * @return	<code>ResourceAdapter</code> associated with this <code>ManagedConnectionFactory</code> instance
      * @see	<code>setResourceAdapter</code>
      */
-    public javax.resource.spi.ResourceAdapter getResourceAdapter() {
+    public jakarta.resource.spi.ResourceAdapter getResourceAdapter() {
         if(logWriter != null) {
             logWriter.println("In getResourceAdapter");
         }
@@ -164,7 +164,7 @@
      *					parameter or the <code>Set</code> of <code>ManagedConnection</code>
      *					objects passed by the application server
      */
-    public javax.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
+    public jakarta.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
         javax.security.auth.Subject subject, ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In matchManagedConnections");
@@ -459,7 +459,7 @@
      *			<code>ManagedConnectionFactory</code> instance
      * @see	<code>getResourceAdapter</code>
      */
-    public void setResourceAdapter(javax.resource.spi.ResourceAdapter ra) {
+    public void setResourceAdapter(jakarta.resource.spi.ResourceAdapter ra) {
         this.ra = ra;   
     }
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
index 6690a67..1be4ded 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
@@ -16,10 +16,10 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.NotSupportedException;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.NotSupportedException;
 import javax.transaction.xa.XAResource;
-import javax.resource.spi.*;
+import jakarta.resource.spi.*;
 
 /**
  * <code>ResourceAdapter</code> implementation for Generic JDBC Connector.
@@ -41,7 +41,7 @@
         )},
         reauthenticationSupport = false
 )
-public class ResourceAdapter implements javax.resource.spi.ResourceAdapter {
+public class ResourceAdapter implements jakarta.resource.spi.ResourceAdapter {
 
     public String raProp = null;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/ConnectionManager.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
index 688e0fc..b219cd2 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
@@ -16,10 +16,10 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 
 /**
  * ConnectionManager implementation for Generic JDBC Connector.
@@ -27,7 +27,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionManager implements javax.resource.spi.ConnectionManager{ 
+public class ConnectionManager implements jakarta.resource.spi.ConnectionManager{ 
 
     /**
      * Returns a <code>Connection </code> object to the <code>ConnectionFactory</code>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
index 997c7b1..39c7876 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
@@ -22,7 +22,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionRequestInfo implements javax.resource.spi.ConnectionRequestInfo{ 
+public class ConnectionRequestInfo implements jakarta.resource.spi.ConnectionRequestInfo{ 
 
     private String user;
     private String password;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
index df2ac4e..85916e5 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
@@ -16,15 +16,15 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ConnectionDefinition;
-import javax.resource.spi.ConfigProperty;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ConnectionDefinition;
+import jakarta.resource.spi.ConfigProperty;
 
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import java.util.logging.Logger;
 import java.util.logging.Level;
 
@@ -68,7 +68,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In createManagedConnection");
@@ -85,7 +85,7 @@
                 dataSourceObj = (javax.sql.DataSource) dsObjBuilder.constructDataSourceObject();
             } catch(ClassCastException cce) {
 	        _logger.log(Level.SEVERE, "jdbc.exc_cce", cce);
-                throw new javax.resource.ResourceException(cce.getMessage());
+                throw new jakarta.resource.ResourceException(cce.getMessage());
             }
         }
         
@@ -106,7 +106,7 @@
         } catch(java.sql.SQLException sqle) {
             sqle.printStackTrace();
 	    _logger.log(Level.WARNING, "jdbc.exc_create_conn", sqle);
-            throw new javax.resource.spi.ResourceAllocationException("The connection could not be allocated: " + 
+            throw new jakarta.resource.spi.ResourceAllocationException("The connection could not be allocated: " + 
                 sqle.getMessage());
         } catch(Exception e){
             System.out.println("V3-TEST : unable to get connection");
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/DataSource.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/DataSource.java
index 150a03e..d90085d 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/DataSource.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/DataSource.java
@@ -20,9 +20,9 @@
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.sql.SQLFeatureNotSupportedException;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.ResourceException;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.ResourceException;
 import javax.naming.Reference;
 
 import java.util.logging.Logger;
@@ -35,7 +35,7 @@
  * @author	Binod P.G
  */
 public class DataSource implements javax.sql.DataSource, java.io.Serializable,
-		com.sun.appserv.jdbcra.DataSource, javax.resource.Referenceable{ 
+		com.sun.appserv.jdbcra.DataSource, jakarta.resource.Referenceable{ 
 				   
     private ManagedConnectionFactory mcf;
     private ConnectionManager cm;				   				   
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/JdbcSetupAdminImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/JdbcSetupAdminImpl.java
index cd44789..f89be57 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/JdbcSetupAdminImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/JdbcSetupAdminImpl.java
@@ -18,9 +18,9 @@
 
 import javax.naming.*;
 import javax.sql.*;
-import javax.resource.spi.Activation;
-import javax.resource.spi.AdministeredObject;
-import javax.resource.spi.ConfigProperty;
+import jakarta.resource.spi.Activation;
+import jakarta.resource.spi.AdministeredObject;
+import jakarta.resource.spi.ConfigProperty;
 import java.sql.*;
 // import javax.sql.DataSource;
 @AdministeredObject(
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/LocalTransaction.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
index 24ae3c7..8ebe057 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
@@ -17,8 +17,8 @@
 package com.sun.jdbcra.spi;
 
 import com.sun.jdbcra.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.LocalTransactionException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.LocalTransactionException;
 
 /**
  * <code>LocalTransaction</code> implementation for Generic JDBC Connector.
@@ -26,7 +26,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class LocalTransaction implements javax.resource.spi.LocalTransaction {
+public class LocalTransaction implements jakarta.resource.spi.LocalTransaction {
     
     private ManagedConnection mc;
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/ManagedConnection.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
index 29e75a6..30f460a 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
@@ -16,8 +16,8 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.*;
-import javax.resource.*;
+import jakarta.resource.spi.*;
+import jakarta.resource.*;
 import javax.security.auth.Subject;
 import java.io.PrintWriter;
 import javax.transaction.xa.XAResource;
@@ -28,8 +28,8 @@
 import javax.sql.XAConnection;
 import java.sql.Connection;
 import java.sql.SQLException;
-import javax.resource.NotSupportedException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.spi.security.PasswordCredential;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.LocalTransaction;
 import com.sun.jdbcra.spi.ManagedConnectionMetaData;
@@ -44,7 +44,7 @@
  * @version	1.0, 02/07/22
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnection implements javax.resource.spi.ManagedConnection {
+public class ManagedConnection implements jakarta.resource.spi.ManagedConnection {
 
     public static final int ISNOTAPOOLEDCONNECTION = 0;
     public static final int ISPOOLEDCONNECTION = 1;
@@ -59,7 +59,7 @@
     private Hashtable connectionHandles;
     private PrintWriter logWriter;
     private PasswordCredential passwdCredential;
-    private javax.resource.spi.ManagedConnectionFactory mcf = null;
+    private jakarta.resource.spi.ManagedConnectionFactory mcf = null;
     private XAResource xar = null;
     public ConnectionHolder activeConnectionHandle;
     
@@ -100,7 +100,7 @@
      *					object passed
      */
     public ManagedConnection(PooledConnection pooledConn, java.sql.Connection sqlConn, 
-        PasswordCredential passwdCred, javax.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
+        PasswordCredential passwdCred, jakarta.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
         if(pooledConn == null && sqlConn == null) {
             throw new ResourceException("Connection object cannot be null");
         }
@@ -276,7 +276,7 @@
      * @throws	SecurityException	if there is a mismatch between the
      *        	                 	password credentials or reauthentication is requested
      */
-    public Object getConnection(Subject sub, javax.resource.spi.ConnectionRequestInfo cxReqInfo) 
+    public Object getConnection(Subject sub, jakarta.resource.spi.ConnectionRequestInfo cxReqInfo) 
         throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getConnection");
@@ -286,7 +286,7 @@
         PasswordCredential passwdCred = SecurityUtils.getPasswordCredential(this.mcf, sub, cxRequestInfo);
             
         if(SecurityUtils.isPasswordCredentialEqual(this.passwdCredential, passwdCred) == false) {
-            throw new javax.resource.spi.SecurityException("Re-authentication not supported");
+            throw new jakarta.resource.spi.SecurityException("Re-authentication not supported");
         }
         
         //GJCINT
@@ -324,7 +324,7 @@
      * @return	<code>LocalTransaction</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
+    public jakarta.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getLocalTransaction");
         }
@@ -356,7 +356,7 @@
      * @return	<code>ManagedConnectionMetaData</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
+    public jakarta.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In getMetaData");
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
index 78537a9..20f03aa 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
@@ -18,7 +18,7 @@
 
 import com.sun.jdbcra.spi.ManagedConnection;
 import java.sql.SQLException;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
@@ -28,7 +28,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnectionMetaData implements javax.resource.spi.ManagedConnectionMetaData {
+public class ManagedConnectionMetaData implements jakarta.resource.spi.ManagedConnectionMetaData {
 
     private java.sql.DatabaseMetaData dmd = null;
     private ManagedConnection mc;
@@ -111,7 +111,7 @@
      * @throws	<code>ResourceException</code>
      */
     public String getUserName() throws ResourceException {
-        javax.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
+        jakarta.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
         if(pc != null) {
             return pc.getUserName();
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/util/MethodExecutor.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/util/MethodExecutor.java
index cbf597b..ce321af 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/util/MethodExecutor.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/util/MethodExecutor.java
@@ -19,7 +19,7 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.InvocationTargetException;
 import java.util.Vector;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/util/SecurityUtils.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/util/SecurityUtils.java
index 6405c61..fc149bf 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/util/SecurityUtils.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-embedded/ra/src/com/sun/jdbcra/util/SecurityUtils.java
@@ -19,9 +19,9 @@
 import javax.security.auth.Subject;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import javax.resource.spi.security.PasswordCredential;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import java.util.Set;
 import java.util.Iterator;
@@ -56,7 +56,7 @@
      * @throws	<code>SecurityException</code>	if access to the <code>Subject</code> instance is denied
      */
     public static PasswordCredential getPasswordCredential(final ManagedConnectionFactory mcf,
-         final Subject subject, javax.resource.spi.ConnectionRequestInfo info) throws ResourceException {
+         final Subject subject, jakarta.resource.spi.ConnectionRequestInfo info) throws ResourceException {
 
 	if (info == null) {
             if (subject == null) {
@@ -77,7 +77,7 @@
                         }
                     });
                 if (pc == null) {
-                    throw new javax.resource.spi.SecurityException("No PasswordCredential found");
+                    throw new jakarta.resource.spi.SecurityException("No PasswordCredential found");
                 } else {
                     return pc;
                 }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/descriptor/blackbox-notx.xml b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/descriptor/blackbox-notx.xml
index 56907d2..6fd1bf5 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/descriptor/blackbox-notx.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/descriptor/blackbox-notx.xml
@@ -81,7 +81,7 @@
         </config-property>
         <authentication-mechanism>
             <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-            <credential-interface>javax.resource.security.PasswordCredential</credential-interface>
+            <credential-interface>jakarta.resource.security.PasswordCredential</credential-interface>
         </authentication-mechanism>
         <reauthentication-support>false</reauthentication-support>
     </resourceadapter>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/descriptor/blackbox-tx.xml b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/descriptor/blackbox-tx.xml
index 9e8ec8e..44d53da 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/descriptor/blackbox-tx.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/descriptor/blackbox-tx.xml
@@ -111,7 +111,7 @@
 
             <authentication-mechanism>
                 <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-                <credential-interface>javax.resource.spi.security.PasswordCredential</credential-interface>
+                <credential-interface>jakarta.resource.spi.security.PasswordCredential</credential-interface>
             </authentication-mechanism>
             <reauthentication-support>false</reauthentication-support>
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/descriptor/blackbox-xa.xml b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/descriptor/blackbox-xa.xml
index c47dcd7..5e3f65f 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/descriptor/blackbox-xa.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/descriptor/blackbox-xa.xml
@@ -81,7 +81,7 @@
         </config-property>
         <authentication-mechanism>
             <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-            <credential-interface>javax.resource.security.PasswordCredential</credential-interface>
+            <credential-interface>jakarta.resource.security.PasswordCredential</credential-interface>
         </authentication-mechanism>
         <reauthentication-support>false</reauthentication-support>
     </resourceadapter>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcConnection.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcConnection.java
index bd2eeb4..fa64959 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcConnection.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionEvent;
-import javax.resource.spi.IllegalStateException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionEvent;
+import jakarta.resource.spi.IllegalStateException;
 import java.sql.*;
 import java.util.Map;
 import java.util.Properties;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcConnectionEventListener.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcConnectionEventListener.java
index b3afdf6..7474a1c 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcConnectionEventListener.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcConnectionEventListener.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.spi.ConnectionEvent;
-import javax.resource.spi.ConnectionEventListener;
-import javax.resource.spi.ManagedConnection;
+import jakarta.resource.spi.ConnectionEvent;
+import jakarta.resource.spi.ConnectionEventListener;
+import jakarta.resource.spi.ManagedConnection;
 import java.util.Vector;
 
 /**
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcConnectionManager.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcConnectionManager.java
index 93959af..4932036 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcConnectionManager.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcConnectionManager.java
@@ -16,11 +16,11 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.spi.ManagedConnectionFactory;
 import java.io.Serializable;
 
 /**
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcConnectionRequestInfo.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcConnectionRequestInfo.java
index 56eda59..d5244e9 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcConnectionRequestInfo.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcConnectionRequestInfo.java
@@ -16,7 +16,7 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ConnectionRequestInfo;
 
 /**
  * @author Tony Ng
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcDataSource.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcDataSource.java
index 8b873fe..b70e746 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcDataSource.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcDataSource.java
@@ -17,11 +17,11 @@
 package com.sun.connector.blackbox;
 
 import javax.naming.Reference;
-import javax.resource.Referenceable;
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.Referenceable;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
 import java.io.PrintWriter;
 import java.io.Serializable;
 import java.sql.Connection;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcManagedConnection.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcManagedConnection.java
index f62b897..8016d1d 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcManagedConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcManagedConnection.java
@@ -16,12 +16,12 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
-import javax.resource.spi.IllegalStateException;
-import javax.resource.spi.SecurityException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.IllegalStateException;
+import jakarta.resource.spi.SecurityException;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import javax.sql.XAConnection;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcManagedConnectionFactory.java
index 93336e6..2f6b397 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/JdbcManagedConnectionFactory.java
@@ -20,9 +20,9 @@
 
 import javax.naming.Context;
 import javax.naming.InitialContext;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import javax.sql.XAConnection;
 import javax.sql.XADataSource;
@@ -109,7 +109,7 @@
                 _logger.severe("@@@@@@ Sending ResourceErrorOccured event");
                 count = 0;
                 ((JdbcManagedConnection) obj).sendEvent(
-                        javax.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
+                        jakarta.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
                         null);
             }
             if (obj instanceof JdbcManagedConnection) {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/LocalTransactionImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/LocalTransactionImpl.java
index f59bbb2..959d4be 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/LocalTransactionImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/LocalTransactionImpl.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.EISSystemException;
-import javax.resource.spi.LocalTransaction;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.EISSystemException;
+import jakarta.resource.spi.LocalTransaction;
 import java.sql.Connection;
 import java.sql.SQLException;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/LocalTxManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/LocalTxManagedConnectionFactory.java
index 75bf313..0e47ddc 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/LocalTxManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/LocalTxManagedConnectionFactory.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import java.io.PrintWriter;
 import java.io.Serializable;
@@ -139,7 +139,7 @@
                      System.out.println(" Sending ConnectionErrorOccured");
                  //count = 0;
                          mc.sendEvent(
-                     javax.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
+                     jakarta.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
                      null);
                  return null;
                      }
@@ -167,7 +167,7 @@
             System.out.println(" Sending ConnectionErrorOccured");
             //count = 0;
             mc.sendEvent(
-                    javax.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
+                    jakarta.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
                     null);
             conn = new HashSet();
             conn.add(mc);
@@ -228,7 +228,7 @@
         return this.ra;
     }
 
-    public void setResourceAdapter(javax.resource.spi.ResourceAdapter resourceAdapter) throws ResourceException {
+    public void setResourceAdapter(jakarta.resource.spi.ResourceAdapter resourceAdapter) throws ResourceException {
         this.ra = (ResourceAdapter)resourceAdapter;
     }
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/MetaDataImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/MetaDataImpl.java
index 5726b12..3c39009 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/MetaDataImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/MetaDataImpl.java
@@ -16,10 +16,10 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.EISSystemException;
-import javax.resource.spi.IllegalStateException;
-import javax.resource.spi.ManagedConnectionMetaData;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.EISSystemException;
+import jakarta.resource.spi.IllegalStateException;
+import jakarta.resource.spi.ManagedConnectionMetaData;
 import java.sql.Connection;
 import java.sql.SQLException;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/NoTxManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/NoTxManagedConnectionFactory.java
index a9d2061..1bd38dd 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/NoTxManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/NoTxManagedConnectionFactory.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import java.io.PrintWriter;
 import java.io.Serializable;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/ResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/ResourceAdapter.java
index c58ca33..8f2f354 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/ResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/ResourceAdapter.java
@@ -16,15 +16,15 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.ResourceException;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.ResourceException;
 import javax.transaction.xa.XAResource;
 import java.io.Serializable;
 
-public class ResourceAdapter implements javax.resource.spi.ResourceAdapter, Serializable {
+public class ResourceAdapter implements jakarta.resource.spi.ResourceAdapter, Serializable {
 
     private BootstrapContext context;
     public void start(BootstrapContext bootstrapContext) throws ResourceAdapterInternalException {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/Util.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/Util.java
index 26f9da1..ec22fef 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/Util.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/com/sun/connector/blackbox/Util.java
@@ -16,11 +16,11 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.SecurityException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.SecurityException;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/tmp-notx/ra.xml b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/tmp-notx/ra.xml
index 56907d2..6fd1bf5 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/tmp-notx/ra.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/tmp-notx/ra.xml
@@ -81,7 +81,7 @@
         </config-property>
         <authentication-mechanism>
             <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-            <credential-interface>javax.resource.security.PasswordCredential</credential-interface>
+            <credential-interface>jakarta.resource.security.PasswordCredential</credential-interface>
         </authentication-mechanism>
         <reauthentication-support>false</reauthentication-support>
     </resourceadapter>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/tmp-tx/ra.xml b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/tmp-tx/ra.xml
index 9e8ec8e..44d53da 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/tmp-tx/ra.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/tmp-tx/ra.xml
@@ -111,7 +111,7 @@
 
             <authentication-mechanism>
                 <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-                <credential-interface>javax.resource.spi.security.PasswordCredential</credential-interface>
+                <credential-interface>jakarta.resource.spi.security.PasswordCredential</credential-interface>
             </authentication-mechanism>
             <reauthentication-support>false</reauthentication-support>
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/tmp-xa/ra.xml b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/tmp-xa/ra.xml
index c47dcd7..5e3f65f 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/tmp-xa/ra.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries-resources/rar/src/tmp-xa/ra.xml
@@ -81,7 +81,7 @@
         </config-property>
         <authentication-mechanism>
             <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-            <credential-interface>javax.resource.security.PasswordCredential</credential-interface>
+            <credential-interface>jakarta.resource.security.PasswordCredential</credential-interface>
         </authentication-mechanism>
         <reauthentication-support>false</reauthentication-support>
     </resourceadapter>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/descriptor/blackbox-notx.xml b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/descriptor/blackbox-notx.xml
index 56907d2..6fd1bf5 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/descriptor/blackbox-notx.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/descriptor/blackbox-notx.xml
@@ -81,7 +81,7 @@
         </config-property>
         <authentication-mechanism>
             <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-            <credential-interface>javax.resource.security.PasswordCredential</credential-interface>
+            <credential-interface>jakarta.resource.security.PasswordCredential</credential-interface>
         </authentication-mechanism>
         <reauthentication-support>false</reauthentication-support>
     </resourceadapter>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/descriptor/blackbox-tx.xml b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/descriptor/blackbox-tx.xml
index 9e8ec8e..44d53da 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/descriptor/blackbox-tx.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/descriptor/blackbox-tx.xml
@@ -111,7 +111,7 @@
 
             <authentication-mechanism>
                 <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-                <credential-interface>javax.resource.spi.security.PasswordCredential</credential-interface>
+                <credential-interface>jakarta.resource.spi.security.PasswordCredential</credential-interface>
             </authentication-mechanism>
             <reauthentication-support>false</reauthentication-support>
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/descriptor/blackbox-xa.xml b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/descriptor/blackbox-xa.xml
index c47dcd7..5e3f65f 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/descriptor/blackbox-xa.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/descriptor/blackbox-xa.xml
@@ -81,7 +81,7 @@
         </config-property>
         <authentication-mechanism>
             <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-            <credential-interface>javax.resource.security.PasswordCredential</credential-interface>
+            <credential-interface>jakarta.resource.security.PasswordCredential</credential-interface>
         </authentication-mechanism>
         <reauthentication-support>false</reauthentication-support>
     </resourceadapter>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcConnection.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcConnection.java
index bd2eeb4..fa64959 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcConnection.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionEvent;
-import javax.resource.spi.IllegalStateException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionEvent;
+import jakarta.resource.spi.IllegalStateException;
 import java.sql.*;
 import java.util.Map;
 import java.util.Properties;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcConnectionEventListener.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcConnectionEventListener.java
index b3afdf6..7474a1c 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcConnectionEventListener.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcConnectionEventListener.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.spi.ConnectionEvent;
-import javax.resource.spi.ConnectionEventListener;
-import javax.resource.spi.ManagedConnection;
+import jakarta.resource.spi.ConnectionEvent;
+import jakarta.resource.spi.ConnectionEventListener;
+import jakarta.resource.spi.ManagedConnection;
 import java.util.Vector;
 
 /**
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcConnectionManager.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcConnectionManager.java
index 93959af..4932036 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcConnectionManager.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcConnectionManager.java
@@ -16,11 +16,11 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.spi.ManagedConnectionFactory;
 import java.io.Serializable;
 
 /**
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcConnectionRequestInfo.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcConnectionRequestInfo.java
index 56eda59..d5244e9 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcConnectionRequestInfo.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcConnectionRequestInfo.java
@@ -16,7 +16,7 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ConnectionRequestInfo;
 
 /**
  * @author Tony Ng
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcDataSource.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcDataSource.java
index 8b873fe..b70e746 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcDataSource.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcDataSource.java
@@ -17,11 +17,11 @@
 package com.sun.connector.blackbox;
 
 import javax.naming.Reference;
-import javax.resource.Referenceable;
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.Referenceable;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
 import java.io.PrintWriter;
 import java.io.Serializable;
 import java.sql.Connection;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcManagedConnection.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcManagedConnection.java
index f62b897..8016d1d 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcManagedConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcManagedConnection.java
@@ -16,12 +16,12 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
-import javax.resource.spi.IllegalStateException;
-import javax.resource.spi.SecurityException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.IllegalStateException;
+import jakarta.resource.spi.SecurityException;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import javax.sql.XAConnection;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcManagedConnectionFactory.java
index 93336e6..2f6b397 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/JdbcManagedConnectionFactory.java
@@ -20,9 +20,9 @@
 
 import javax.naming.Context;
 import javax.naming.InitialContext;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import javax.sql.XAConnection;
 import javax.sql.XADataSource;
@@ -109,7 +109,7 @@
                 _logger.severe("@@@@@@ Sending ResourceErrorOccured event");
                 count = 0;
                 ((JdbcManagedConnection) obj).sendEvent(
-                        javax.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
+                        jakarta.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
                         null);
             }
             if (obj instanceof JdbcManagedConnection) {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/LocalTransactionImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/LocalTransactionImpl.java
index f59bbb2..959d4be 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/LocalTransactionImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/LocalTransactionImpl.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.EISSystemException;
-import javax.resource.spi.LocalTransaction;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.EISSystemException;
+import jakarta.resource.spi.LocalTransaction;
 import java.sql.Connection;
 import java.sql.SQLException;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/LocalTxManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/LocalTxManagedConnectionFactory.java
index 75bf313..0e47ddc 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/LocalTxManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/LocalTxManagedConnectionFactory.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import java.io.PrintWriter;
 import java.io.Serializable;
@@ -139,7 +139,7 @@
                      System.out.println(" Sending ConnectionErrorOccured");
                  //count = 0;
                          mc.sendEvent(
-                     javax.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
+                     jakarta.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
                      null);
                  return null;
                      }
@@ -167,7 +167,7 @@
             System.out.println(" Sending ConnectionErrorOccured");
             //count = 0;
             mc.sendEvent(
-                    javax.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
+                    jakarta.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
                     null);
             conn = new HashSet();
             conn.add(mc);
@@ -228,7 +228,7 @@
         return this.ra;
     }
 
-    public void setResourceAdapter(javax.resource.spi.ResourceAdapter resourceAdapter) throws ResourceException {
+    public void setResourceAdapter(jakarta.resource.spi.ResourceAdapter resourceAdapter) throws ResourceException {
         this.ra = (ResourceAdapter)resourceAdapter;
     }
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/MetaDataImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/MetaDataImpl.java
index 5726b12..3c39009 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/MetaDataImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/MetaDataImpl.java
@@ -16,10 +16,10 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.EISSystemException;
-import javax.resource.spi.IllegalStateException;
-import javax.resource.spi.ManagedConnectionMetaData;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.EISSystemException;
+import jakarta.resource.spi.IllegalStateException;
+import jakarta.resource.spi.ManagedConnectionMetaData;
 import java.sql.Connection;
 import java.sql.SQLException;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/NoTxManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/NoTxManagedConnectionFactory.java
index a9d2061..1bd38dd 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/NoTxManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/NoTxManagedConnectionFactory.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import java.io.PrintWriter;
 import java.io.Serializable;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/ResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/ResourceAdapter.java
index c58ca33..8f2f354 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/ResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/ResourceAdapter.java
@@ -16,15 +16,15 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.ResourceException;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.ResourceException;
 import javax.transaction.xa.XAResource;
 import java.io.Serializable;
 
-public class ResourceAdapter implements javax.resource.spi.ResourceAdapter, Serializable {
+public class ResourceAdapter implements jakarta.resource.spi.ResourceAdapter, Serializable {
 
     private BootstrapContext context;
     public void start(BootstrapContext bootstrapContext) throws ResourceAdapterInternalException {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/Util.java b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/Util.java
index 26f9da1..ec22fef 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/Util.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/installed-libraries/rar/src/com/sun/connector/blackbox/Util.java
@@ -16,11 +16,11 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.SecurityException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.SecurityException;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/DeliveryWork.java
index 63076d3..658233e 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/DeliveryWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/JSR322Work.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/JSR322Work.java
index eda3858..5107ac1 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/JSR322Work.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/JSR322Work.java
@@ -16,9 +16,9 @@
 
 package connector;
 
-import javax.resource.spi.work.WorkContextProvider;
-import javax.resource.spi.work.WorkContext;
-import javax.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.work.WorkContextProvider;
+import jakarta.resource.spi.work.WorkContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
 import java.util.List;
 import java.util.ArrayList;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/MyAdminObject.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/MyAdminObject.java
index c7596b4..a68a5b7 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/MyAdminObject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/MyAdminObject.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.*;
+import jakarta.resource.spi.*;
 
 public class MyAdminObject implements java.io.Serializable, ResourceAdapterAssociation {
 
@@ -37,7 +37,7 @@
     }
 
 
-    public void setResourceAdapter(ResourceAdapter ra) throws javax.resource.ResourceException{
+    public void setResourceAdapter(ResourceAdapter ra) throws jakarta.resource.ResourceException{
         this.resourceAdapter = ra;
     }
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/MyPlainSICWithGPC.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/MyPlainSICWithGPC.java
index c98bc54..7043a92 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/MyPlainSICWithGPC.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/MyPlainSICWithGPC.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import javax.security.auth.Subject;
 import javax.security.auth.message.callback.GroupPrincipalCallback;
 import javax.security.auth.callback.CallbackHandler;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/MyPlainSecurityContext.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/MyPlainSecurityContext.java
index 595daf8..d1dcc5d 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/MyPlainSecurityContext.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/MyPlainSecurityContext.java
@@ -25,7 +25,7 @@
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.Callback;
 import javax.security.auth.callback.UnsupportedCallbackException;
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import java.util.List;
 import java.util.ArrayList;
 import java.io.IOException;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/MySecurityContext.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/MySecurityContext.java
index 294cebf..b377185 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/MySecurityContext.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/MySecurityContext.java
@@ -24,7 +24,7 @@
 import javax.security.auth.message.callback.CallerPrincipalCallback;
 import javax.security.auth.message.callback.PasswordValidationCallback;
 import javax.security.auth.message.callback.GroupPrincipalCallback;
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import java.io.IOException;
 import java.util.List;
 import java.util.ArrayList;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/MySecurityContextWithListener.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/MySecurityContextWithListener.java
index b3decce..e64fdfe 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/MySecurityContextWithListener.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/MySecurityContextWithListener.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.WorkContextLifecycleListener;
+import jakarta.resource.spi.work.WorkContextLifecycleListener;
 
 
 public class MySecurityContextWithListener extends MySecurityContext implements WorkContextLifecycleListener {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/NestedWork_Child.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/NestedWork_Child.java
index 1428bca..ff23161 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/NestedWork_Child.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/NestedWork_Child.java
@@ -16,9 +16,9 @@
 
 package connector;
 
-import javax.resource.spi.work.*;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.XATerminator;
+import jakarta.resource.spi.work.*;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.XATerminator;
 import javax.transaction.xa.Xid;
 import java.util.List;
 import java.util.ArrayList;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/NestedWork_Parent.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/NestedWork_Parent.java
index 4e60c96..2cb8991 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/NestedWork_Parent.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/NestedWork_Parent.java
@@ -16,9 +16,9 @@
 
 package connector;
 
-import javax.resource.spi.work.*;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.XATerminator;
+import jakarta.resource.spi.work.*;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.XATerminator;
 import javax.transaction.xa.Xid;
 import java.util.List;
 import java.util.ArrayList;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/SimpleActivationSpec.java
index 56e8e32..8182ef5 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/SimpleActivationSpec.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
 
 /**
  * This class is supposed to implemented as a JavaBean
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/SimpleResourceAdapterImpl.java
index 1ae55e0..c5dea45 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -20,20 +20,20 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Properties;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/SinglePrincipalSIC.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/SinglePrincipalSIC.java
index ec502ef..87b408c 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/SinglePrincipalSIC.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/SinglePrincipalSIC.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.Callback;
 import javax.security.auth.Subject;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/UnauthenticatedIdentityOptWorkContext.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/UnauthenticatedIdentityOptWorkContext.java
index a7db1e2..24d47d9 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/UnauthenticatedIdentityOptWorkContext.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/UnauthenticatedIdentityOptWorkContext.java
@@ -23,7 +23,7 @@
 import javax.security.auth.callback.UnsupportedCallbackException;
 import javax.security.auth.Subject;
 import javax.security.auth.message.callback.CallerPrincipalCallback;
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import java.io.IOException;
 import java.util.List;
 import java.util.ArrayList;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/UnauthenticatedSecurityContext_EmptyExecutionSubject.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/UnauthenticatedSecurityContext_EmptyExecutionSubject.java
index cc18a13..a31916a 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/UnauthenticatedSecurityContext_EmptyExecutionSubject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/UnauthenticatedSecurityContext_EmptyExecutionSubject.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.Callback;
 import javax.security.auth.Subject;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/UnauthenticatedSecurityContext_NullPrincipalOrName.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/UnauthenticatedSecurityContext_NullPrincipalOrName.java
index b7e770a..297de3f 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/UnauthenticatedSecurityContext_NullPrincipalOrName.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/UnauthenticatedSecurityContext_NullPrincipalOrName.java
@@ -18,7 +18,7 @@
 
 import org.glassfish.security.common.PrincipalImpl;
 
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.Callback;
 import javax.security.auth.Subject;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/UnsupportedWorkContext.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/UnsupportedWorkContext.java
index a2e715e..c6dcb31 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/UnsupportedWorkContext.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/UnsupportedWorkContext.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.WorkContext;
+import jakarta.resource.spi.work.WorkContext;
 
 public class UnsupportedWorkContext implements WorkContext {
     public String getName() {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/WorkDispatcher.java
index f8d4f24..ddff005 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources-app-module-scoped/ra/src/connector/WorkDispatcher.java
@@ -20,12 +20,12 @@
 import org.glassfish.security.common.PrincipalImpl;
 
 import java.lang.reflect.Method;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.work.*;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.work.*;
 import javax.transaction.xa.Xid;
 
 /**
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/DeliveryWork.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/DeliveryWork.java
index 63076d3..658233e 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/DeliveryWork.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/DeliveryWork.java
@@ -18,12 +18,12 @@
 
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
-import javax.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
+import jakarta.resource.spi.work.ExecutionContext;
 
 /**
  *
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/JSR322Work.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/JSR322Work.java
index eda3858..5107ac1 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/JSR322Work.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/JSR322Work.java
@@ -16,9 +16,9 @@
 
 package connector;
 
-import javax.resource.spi.work.WorkContextProvider;
-import javax.resource.spi.work.WorkContext;
-import javax.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.work.WorkContextProvider;
+import jakarta.resource.spi.work.WorkContext;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
 import java.util.List;
 import java.util.ArrayList;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/MyAdminObject.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/MyAdminObject.java
index c7596b4..a68a5b7 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/MyAdminObject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/MyAdminObject.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.*;
+import jakarta.resource.spi.*;
 
 public class MyAdminObject implements java.io.Serializable, ResourceAdapterAssociation {
 
@@ -37,7 +37,7 @@
     }
 
 
-    public void setResourceAdapter(ResourceAdapter ra) throws javax.resource.ResourceException{
+    public void setResourceAdapter(ResourceAdapter ra) throws jakarta.resource.ResourceException{
         this.resourceAdapter = ra;
     }
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/MyPlainSICWithGPC.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/MyPlainSICWithGPC.java
index c98bc54..7043a92 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/MyPlainSICWithGPC.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/MyPlainSICWithGPC.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import javax.security.auth.Subject;
 import javax.security.auth.message.callback.GroupPrincipalCallback;
 import javax.security.auth.callback.CallbackHandler;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/MyPlainSecurityContext.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/MyPlainSecurityContext.java
index 595daf8..d1dcc5d 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/MyPlainSecurityContext.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/MyPlainSecurityContext.java
@@ -25,7 +25,7 @@
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.Callback;
 import javax.security.auth.callback.UnsupportedCallbackException;
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import java.util.List;
 import java.util.ArrayList;
 import java.io.IOException;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/MySecurityContext.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/MySecurityContext.java
index 294cebf..b377185 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/MySecurityContext.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/MySecurityContext.java
@@ -24,7 +24,7 @@
 import javax.security.auth.message.callback.CallerPrincipalCallback;
 import javax.security.auth.message.callback.PasswordValidationCallback;
 import javax.security.auth.message.callback.GroupPrincipalCallback;
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import java.io.IOException;
 import java.util.List;
 import java.util.ArrayList;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/MySecurityContextWithListener.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/MySecurityContextWithListener.java
index b3decce..e64fdfe 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/MySecurityContextWithListener.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/MySecurityContextWithListener.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.WorkContextLifecycleListener;
+import jakarta.resource.spi.work.WorkContextLifecycleListener;
 
 
 public class MySecurityContextWithListener extends MySecurityContext implements WorkContextLifecycleListener {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/NestedWork_Child.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/NestedWork_Child.java
index 1428bca..ff23161 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/NestedWork_Child.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/NestedWork_Child.java
@@ -16,9 +16,9 @@
 
 package connector;
 
-import javax.resource.spi.work.*;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.XATerminator;
+import jakarta.resource.spi.work.*;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.XATerminator;
 import javax.transaction.xa.Xid;
 import java.util.List;
 import java.util.ArrayList;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/NestedWork_Parent.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/NestedWork_Parent.java
index 4e60c96..2cb8991 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/NestedWork_Parent.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/NestedWork_Parent.java
@@ -16,9 +16,9 @@
 
 package connector;
 
-import javax.resource.spi.work.*;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.XATerminator;
+import jakarta.resource.spi.work.*;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.XATerminator;
 import javax.transaction.xa.Xid;
 import java.util.List;
 import java.util.ArrayList;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/SimpleActivationSpec.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/SimpleActivationSpec.java
index 56e8e32..8182ef5 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/SimpleActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/SimpleActivationSpec.java
@@ -16,8 +16,8 @@
 
 package connector;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ResourceAdapter;
 
 /**
  * This class is supposed to implemented as a JavaBean
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/SimpleResourceAdapterImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/SimpleResourceAdapterImpl.java
index 1ae55e0..c5dea45 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/SimpleResourceAdapterImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/SimpleResourceAdapterImpl.java
@@ -20,20 +20,20 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Properties;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.UnavailableException;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.work.ExecutionContext;
-import javax.resource.spi.work.Work;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.UnavailableException;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.work.ExecutionContext;
+import jakarta.resource.spi.work.Work;
+import jakarta.resource.spi.work.WorkManager;
 import javax.transaction.xa.XAResource;
 import javax.transaction.xa.Xid;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/SinglePrincipalSIC.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/SinglePrincipalSIC.java
index ec502ef..87b408c 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/SinglePrincipalSIC.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/SinglePrincipalSIC.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.Callback;
 import javax.security.auth.Subject;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/UnauthenticatedIdentityOptWorkContext.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/UnauthenticatedIdentityOptWorkContext.java
index a7db1e2..24d47d9 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/UnauthenticatedIdentityOptWorkContext.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/UnauthenticatedIdentityOptWorkContext.java
@@ -23,7 +23,7 @@
 import javax.security.auth.callback.UnsupportedCallbackException;
 import javax.security.auth.Subject;
 import javax.security.auth.message.callback.CallerPrincipalCallback;
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import java.io.IOException;
 import java.util.List;
 import java.util.ArrayList;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/UnauthenticatedSecurityContext_EmptyExecutionSubject.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/UnauthenticatedSecurityContext_EmptyExecutionSubject.java
index cc18a13..a31916a 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/UnauthenticatedSecurityContext_EmptyExecutionSubject.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/UnauthenticatedSecurityContext_EmptyExecutionSubject.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.Callback;
 import javax.security.auth.Subject;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/UnauthenticatedSecurityContext_NullPrincipalOrName.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/UnauthenticatedSecurityContext_NullPrincipalOrName.java
index b7e770a..297de3f 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/UnauthenticatedSecurityContext_NullPrincipalOrName.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/UnauthenticatedSecurityContext_NullPrincipalOrName.java
@@ -18,7 +18,7 @@
 
 import org.glassfish.security.common.PrincipalImpl;
 
-import javax.resource.spi.work.SecurityContext;
+import jakarta.resource.spi.work.SecurityContext;
 import javax.security.auth.callback.CallbackHandler;
 import javax.security.auth.callback.Callback;
 import javax.security.auth.Subject;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/UnsupportedWorkContext.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/UnsupportedWorkContext.java
index a2e715e..c6dcb31 100644
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/UnsupportedWorkContext.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/UnsupportedWorkContext.java
@@ -16,7 +16,7 @@
 
 package connector;
 
-import javax.resource.spi.work.WorkContext;
+import jakarta.resource.spi.work.WorkContext;
 
 public class UnsupportedWorkContext implements WorkContext {
     public String getName() {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/WorkDispatcher.java b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/WorkDispatcher.java
index f8d4f24..ddff005 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/WorkDispatcher.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/multiple-resources.xml/ra/src/connector/WorkDispatcher.java
@@ -20,12 +20,12 @@
 import org.glassfish.security.common.PrincipalImpl;
 
 import java.lang.reflect.Method;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.work.*;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.work.*;
 import javax.transaction.xa.Xid;
 
 /**
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
index 9efb07c..c2822e2 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
@@ -22,7 +22,7 @@
 import java.util.StringTokenizer;
 import java.util.Enumeration;
 import com.sun.jdbcra.util.MethodExecutor;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
index e6f751b..ac7e748 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
@@ -16,11 +16,11 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.ConnectionManager;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import java.sql.DriverManager;
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
@@ -37,14 +37,14 @@
  * @author	Evani Sai Surya Kiran
  */
 
-public abstract class ManagedConnectionFactory implements javax.resource.spi.ManagedConnectionFactory, 
+public abstract class ManagedConnectionFactory implements jakarta.resource.spi.ManagedConnectionFactory, 
     java.io.Serializable {
     
     protected DataSourceSpec spec = new DataSourceSpec();
     protected transient DataSourceObjectBuilder dsObjBuilder;
     
     protected java.io.PrintWriter logWriter = null;
-    protected javax.resource.spi.ResourceAdapter ra = null;
+    protected jakarta.resource.spi.ResourceAdapter ra = null;
     
     private static Logger _logger;
     static {
@@ -62,7 +62,7 @@
             logWriter.println("In createConnectionFactory()");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, null);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, null);
         
         return cf;
     }
@@ -74,12 +74,12 @@
      * @param	cxManager	<code>ConnectionManager</code> passed by the application server
      * @return	Generic JDBC Connector implementation of <code>javax.sql.DataSource</code>
      */
-    public Object createConnectionFactory(javax.resource.spi.ConnectionManager cxManager) {
+    public Object createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager) {
         if(logWriter != null) {
-            logWriter.println("In createConnectionFactory(javax.resource.spi.ConnectionManager cxManager)");
+            logWriter.println("In createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager)");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, cxManager);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, cxManager);
         return cf; 
     }
     
@@ -100,7 +100,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public abstract javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public abstract jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException;
     
     /**
@@ -130,7 +130,7 @@
      * @return	<code>ResourceAdapter</code> associated with this <code>ManagedConnectionFactory</code> instance
      * @see	<code>setResourceAdapter</code>
      */
-    public javax.resource.spi.ResourceAdapter getResourceAdapter() {
+    public jakarta.resource.spi.ResourceAdapter getResourceAdapter() {
         if(logWriter != null) {
             logWriter.println("In getResourceAdapter");
         }
@@ -164,7 +164,7 @@
      *					parameter or the <code>Set</code> of <code>ManagedConnection</code>
      *					objects passed by the application server
      */
-    public javax.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
+    public jakarta.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
         javax.security.auth.Subject subject, ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In matchManagedConnections");
@@ -459,7 +459,7 @@
      *			<code>ManagedConnectionFactory</code> instance
      * @see	<code>getResourceAdapter</code>
      */
-    public void setResourceAdapter(javax.resource.spi.ResourceAdapter ra) {
+    public void setResourceAdapter(jakarta.resource.spi.ResourceAdapter ra) {
         this.ra = ra;   
     }
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
index 0ebd31f..555be77 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
@@ -16,12 +16,12 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.NotSupportedException;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.NotSupportedException;
 import javax.transaction.xa.XAResource;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapterInternalException;
 
 /**
  * <code>ResourceAdapter</code> implementation for Generic JDBC Connector.
@@ -29,7 +29,7 @@
  * @version	1.0, 02/08/05
  * @author	Evani Sai Surya Kiran
  */
-public class ResourceAdapter implements javax.resource.spi.ResourceAdapter {
+public class ResourceAdapter implements jakarta.resource.spi.ResourceAdapter {
 
     public String raProp = null;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ConnectionManager.java b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
index 688e0fc..b219cd2 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
@@ -16,10 +16,10 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 
 /**
  * ConnectionManager implementation for Generic JDBC Connector.
@@ -27,7 +27,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionManager implements javax.resource.spi.ConnectionManager{ 
+public class ConnectionManager implements jakarta.resource.spi.ConnectionManager{ 
 
     /**
      * Returns a <code>Connection </code> object to the <code>ConnectionFactory</code>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
index 997c7b1..39c7876 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
@@ -22,7 +22,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionRequestInfo implements javax.resource.spi.ConnectionRequestInfo{ 
+public class ConnectionRequestInfo implements jakarta.resource.spi.ConnectionRequestInfo{ 
 
     private String user;
     private String password;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
index 7c36182..4bf9fed 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
@@ -16,13 +16,13 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.ConnectionManager;
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import com.sun.jdbcra.spi.ManagedConnectionFactory;
 import com.sun.jdbcra.common.DataSourceSpec;
 import java.util.logging.Logger;
@@ -63,7 +63,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In createManagedConnection");
@@ -79,7 +79,7 @@
                 dataSourceObj = (javax.sql.DataSource) dsObjBuilder.constructDataSourceObject();
             } catch(ClassCastException cce) {
 	        _logger.log(Level.SEVERE, "jdbc.exc_cce", cce);
-                throw new javax.resource.ResourceException(cce.getMessage());
+                throw new jakarta.resource.ResourceException(cce.getMessage());
             }
         }
         
@@ -99,7 +99,7 @@
 	    }
         } catch(java.sql.SQLException sqle) {
 	    _logger.log(Level.WARNING, "jdbc.exc_create_conn", sqle);
-            throw new javax.resource.spi.ResourceAllocationException("The connection could not be allocated: " + 
+            throw new jakarta.resource.spi.ResourceAllocationException("The connection could not be allocated: " + 
                 sqle.getMessage());
         }
         
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/DataSource.java b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/DataSource.java
index 8d0d0a1..2068430 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/DataSource.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/DataSource.java
@@ -20,9 +20,9 @@
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.sql.SQLFeatureNotSupportedException;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.ResourceException;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.ResourceException;
 import javax.naming.Reference;
 
 import java.util.logging.Logger;
@@ -35,7 +35,7 @@
  * @author	Binod P.G
  */
 public class DataSource implements javax.sql.DataSource, java.io.Serializable,
-		com.sun.appserv.jdbcra.DataSource, javax.resource.Referenceable{ 
+		com.sun.appserv.jdbcra.DataSource, jakarta.resource.Referenceable{ 
 				   
     private ManagedConnectionFactory mcf;
     private ConnectionManager cm;				   				   
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/LocalTransaction.java b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
index 24ae3c7..8ebe057 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
@@ -17,8 +17,8 @@
 package com.sun.jdbcra.spi;
 
 import com.sun.jdbcra.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.LocalTransactionException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.LocalTransactionException;
 
 /**
  * <code>LocalTransaction</code> implementation for Generic JDBC Connector.
@@ -26,7 +26,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class LocalTransaction implements javax.resource.spi.LocalTransaction {
+public class LocalTransaction implements jakarta.resource.spi.LocalTransaction {
     
     private ManagedConnection mc;
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ManagedConnection.java b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
index 29e75a6..30f460a 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
@@ -16,8 +16,8 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.*;
-import javax.resource.*;
+import jakarta.resource.spi.*;
+import jakarta.resource.*;
 import javax.security.auth.Subject;
 import java.io.PrintWriter;
 import javax.transaction.xa.XAResource;
@@ -28,8 +28,8 @@
 import javax.sql.XAConnection;
 import java.sql.Connection;
 import java.sql.SQLException;
-import javax.resource.NotSupportedException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.spi.security.PasswordCredential;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.LocalTransaction;
 import com.sun.jdbcra.spi.ManagedConnectionMetaData;
@@ -44,7 +44,7 @@
  * @version	1.0, 02/07/22
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnection implements javax.resource.spi.ManagedConnection {
+public class ManagedConnection implements jakarta.resource.spi.ManagedConnection {
 
     public static final int ISNOTAPOOLEDCONNECTION = 0;
     public static final int ISPOOLEDCONNECTION = 1;
@@ -59,7 +59,7 @@
     private Hashtable connectionHandles;
     private PrintWriter logWriter;
     private PasswordCredential passwdCredential;
-    private javax.resource.spi.ManagedConnectionFactory mcf = null;
+    private jakarta.resource.spi.ManagedConnectionFactory mcf = null;
     private XAResource xar = null;
     public ConnectionHolder activeConnectionHandle;
     
@@ -100,7 +100,7 @@
      *					object passed
      */
     public ManagedConnection(PooledConnection pooledConn, java.sql.Connection sqlConn, 
-        PasswordCredential passwdCred, javax.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
+        PasswordCredential passwdCred, jakarta.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
         if(pooledConn == null && sqlConn == null) {
             throw new ResourceException("Connection object cannot be null");
         }
@@ -276,7 +276,7 @@
      * @throws	SecurityException	if there is a mismatch between the
      *        	                 	password credentials or reauthentication is requested
      */
-    public Object getConnection(Subject sub, javax.resource.spi.ConnectionRequestInfo cxReqInfo) 
+    public Object getConnection(Subject sub, jakarta.resource.spi.ConnectionRequestInfo cxReqInfo) 
         throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getConnection");
@@ -286,7 +286,7 @@
         PasswordCredential passwdCred = SecurityUtils.getPasswordCredential(this.mcf, sub, cxRequestInfo);
             
         if(SecurityUtils.isPasswordCredentialEqual(this.passwdCredential, passwdCred) == false) {
-            throw new javax.resource.spi.SecurityException("Re-authentication not supported");
+            throw new jakarta.resource.spi.SecurityException("Re-authentication not supported");
         }
         
         //GJCINT
@@ -324,7 +324,7 @@
      * @return	<code>LocalTransaction</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
+    public jakarta.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getLocalTransaction");
         }
@@ -356,7 +356,7 @@
      * @return	<code>ManagedConnectionMetaData</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
+    public jakarta.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In getMetaData");
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
index 78537a9..20f03aa 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
@@ -18,7 +18,7 @@
 
 import com.sun.jdbcra.spi.ManagedConnection;
 import java.sql.SQLException;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
@@ -28,7 +28,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnectionMetaData implements javax.resource.spi.ManagedConnectionMetaData {
+public class ManagedConnectionMetaData implements jakarta.resource.spi.ManagedConnectionMetaData {
 
     private java.sql.DatabaseMetaData dmd = null;
     private ManagedConnection mc;
@@ -111,7 +111,7 @@
      * @throws	<code>ResourceException</code>
      */
     public String getUserName() throws ResourceException {
-        javax.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
+        jakarta.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
         if(pc != null) {
             return pc.getUserName();
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/util/MethodExecutor.java b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/util/MethodExecutor.java
index cbf597b..ce321af 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/util/MethodExecutor.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/util/MethodExecutor.java
@@ -19,7 +19,7 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.InvocationTargetException;
 import java.util.Vector;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/util/SecurityUtils.java b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/util/SecurityUtils.java
index 6405c61..fc149bf 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/util/SecurityUtils.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/nonstringmcfproperties/ra/src/com/sun/jdbcra/util/SecurityUtils.java
@@ -19,9 +19,9 @@
 import javax.security.auth.Subject;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import javax.resource.spi.security.PasswordCredential;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import java.util.Set;
 import java.util.Iterator;
@@ -56,7 +56,7 @@
      * @throws	<code>SecurityException</code>	if access to the <code>Subject</code> instance is denied
      */
     public static PasswordCredential getPasswordCredential(final ManagedConnectionFactory mcf,
-         final Subject subject, javax.resource.spi.ConnectionRequestInfo info) throws ResourceException {
+         final Subject subject, jakarta.resource.spi.ConnectionRequestInfo info) throws ResourceException {
 
 	if (info == null) {
             if (subject == null) {
@@ -77,7 +77,7 @@
                         }
                     });
                 if (pc == null) {
-                    throw new javax.resource.spi.SecurityException("No PasswordCredential found");
+                    throw new jakarta.resource.spi.SecurityException("No PasswordCredential found");
                 } else {
                     return pc;
                 }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/descriptor/blackbox-notx.xml b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/descriptor/blackbox-notx.xml
index 56907d2..6fd1bf5 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/descriptor/blackbox-notx.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/descriptor/blackbox-notx.xml
@@ -81,7 +81,7 @@
         </config-property>
         <authentication-mechanism>
             <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-            <credential-interface>javax.resource.security.PasswordCredential</credential-interface>
+            <credential-interface>jakarta.resource.security.PasswordCredential</credential-interface>
         </authentication-mechanism>
         <reauthentication-support>false</reauthentication-support>
     </resourceadapter>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/descriptor/blackbox-tx.xml b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/descriptor/blackbox-tx.xml
index 9e8ec8e..44d53da 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/descriptor/blackbox-tx.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/descriptor/blackbox-tx.xml
@@ -111,7 +111,7 @@
 
             <authentication-mechanism>
                 <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-                <credential-interface>javax.resource.spi.security.PasswordCredential</credential-interface>
+                <credential-interface>jakarta.resource.spi.security.PasswordCredential</credential-interface>
             </authentication-mechanism>
             <reauthentication-support>false</reauthentication-support>
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/descriptor/blackbox-xa.xml b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/descriptor/blackbox-xa.xml
index c47dcd7..5e3f65f 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/descriptor/blackbox-xa.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/descriptor/blackbox-xa.xml
@@ -81,7 +81,7 @@
         </config-property>
         <authentication-mechanism>
             <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-            <credential-interface>javax.resource.security.PasswordCredential</credential-interface>
+            <credential-interface>jakarta.resource.security.PasswordCredential</credential-interface>
         </authentication-mechanism>
         <reauthentication-support>false</reauthentication-support>
     </resourceadapter>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcConnection.java b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcConnection.java
index 503789f..70100b8 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcConnection.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionEvent;
-import javax.resource.spi.IllegalStateException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionEvent;
+import jakarta.resource.spi.IllegalStateException;
 import java.sql.*;
 import java.util.Map;
 import java.util.Properties;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcConnectionEventListener.java b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcConnectionEventListener.java
index b3afdf6..7474a1c 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcConnectionEventListener.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcConnectionEventListener.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.spi.ConnectionEvent;
-import javax.resource.spi.ConnectionEventListener;
-import javax.resource.spi.ManagedConnection;
+import jakarta.resource.spi.ConnectionEvent;
+import jakarta.resource.spi.ConnectionEventListener;
+import jakarta.resource.spi.ManagedConnection;
 import java.util.Vector;
 
 /**
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcConnectionManager.java b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcConnectionManager.java
index b40ed30..843adb2 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcConnectionManager.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcConnectionManager.java
@@ -16,11 +16,11 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.spi.ManagedConnectionFactory;
 import java.io.Serializable;
 
 /**
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcConnectionRequestInfo.java b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcConnectionRequestInfo.java
index 56eda59..d5244e9 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcConnectionRequestInfo.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcConnectionRequestInfo.java
@@ -16,7 +16,7 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ConnectionRequestInfo;
 
 /**
  * @author Tony Ng
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcDataSource.java b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcDataSource.java
index 8b873fe..b70e746 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcDataSource.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcDataSource.java
@@ -17,11 +17,11 @@
 package com.sun.connector.blackbox;
 
 import javax.naming.Reference;
-import javax.resource.Referenceable;
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.Referenceable;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
 import java.io.PrintWriter;
 import java.io.Serializable;
 import java.sql.Connection;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcDataSource_NoTx.java b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcDataSource_NoTx.java
index f3bfca6..346e3fa 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcDataSource_NoTx.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcDataSource_NoTx.java
@@ -17,11 +17,11 @@
 package com.sun.connector.blackbox;
 
 import javax.naming.Reference;
-import javax.resource.Referenceable;
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.Referenceable;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
 import java.io.PrintWriter;
 import java.io.Serializable;
 import java.sql.Connection;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcDataSource_Tx.java b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcDataSource_Tx.java
index 35d0b12..b3835b3 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcDataSource_Tx.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcDataSource_Tx.java
@@ -17,11 +17,11 @@
 package com.sun.connector.blackbox;
 
 import javax.naming.Reference;
-import javax.resource.Referenceable;
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.Referenceable;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
 import java.io.PrintWriter;
 import java.io.Serializable;
 import java.sql.Connection;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcDataSource_XA.java b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcDataSource_XA.java
index 9e13222..f609292 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcDataSource_XA.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcDataSource_XA.java
@@ -17,11 +17,11 @@
 package com.sun.connector.blackbox;
 
 import javax.naming.Reference;
-import javax.resource.Referenceable;
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.Referenceable;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
 import java.io.PrintWriter;
 import java.io.Serializable;
 import java.sql.Connection;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcManagedConnection.java b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcManagedConnection.java
index f62b897..8016d1d 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcManagedConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcManagedConnection.java
@@ -16,12 +16,12 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
-import javax.resource.spi.IllegalStateException;
-import javax.resource.spi.SecurityException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.IllegalStateException;
+import jakarta.resource.spi.SecurityException;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import javax.sql.XAConnection;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcManagedConnectionFactory.java
index 6fcebaf..9515d76 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/JdbcManagedConnectionFactory.java
@@ -20,9 +20,9 @@
 
 import javax.naming.Context;
 import javax.naming.InitialContext;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import javax.sql.XAConnection;
 import javax.sql.XADataSource;
@@ -109,7 +109,7 @@
                 _logger.severe("@@@@@@ Sending ResourceErrorOccured event");
                 count = 0;
                 ((JdbcManagedConnection) obj).sendEvent(
-                        javax.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
+                        jakarta.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
                         null);
             }
             if (obj instanceof JdbcManagedConnection) {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/LocalTransactionImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/LocalTransactionImpl.java
index f59bbb2..959d4be 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/LocalTransactionImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/LocalTransactionImpl.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.EISSystemException;
-import javax.resource.spi.LocalTransaction;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.EISSystemException;
+import jakarta.resource.spi.LocalTransaction;
 import java.sql.Connection;
 import java.sql.SQLException;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/LocalTxManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/LocalTxManagedConnectionFactory.java
index 3172fa4..2480518 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/LocalTxManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/LocalTxManagedConnectionFactory.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import java.io.PrintWriter;
 import java.io.Serializable;
@@ -139,7 +139,7 @@
                      System.out.println(" Sending ConnectionErrorOccured");
                  //count = 0;
                          mc.sendEvent(
-                     javax.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
+                     jakarta.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
                      null);
                  return null;
                      }
@@ -167,7 +167,7 @@
             System.out.println(" Sending ConnectionErrorOccured");
             //count = 0;
             mc.sendEvent(
-                    javax.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
+                    jakarta.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
                     null);
             conn = new HashSet();
             conn.add(mc);
@@ -228,7 +228,7 @@
         return this.ra;
     }
 
-    public void setResourceAdapter(javax.resource.spi.ResourceAdapter resourceAdapter) throws ResourceException {
+    public void setResourceAdapter(jakarta.resource.spi.ResourceAdapter resourceAdapter) throws ResourceException {
         this.ra = (ResourceAdapter)resourceAdapter;
     }
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/MetaDataImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/MetaDataImpl.java
index 5726b12..3c39009 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/MetaDataImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/MetaDataImpl.java
@@ -16,10 +16,10 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.EISSystemException;
-import javax.resource.spi.IllegalStateException;
-import javax.resource.spi.ManagedConnectionMetaData;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.EISSystemException;
+import jakarta.resource.spi.IllegalStateException;
+import jakarta.resource.spi.ManagedConnectionMetaData;
 import java.sql.Connection;
 import java.sql.SQLException;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/NoTxManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/NoTxManagedConnectionFactory.java
index 4a522e0..cf95b12 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/NoTxManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/NoTxManagedConnectionFactory.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import java.io.PrintWriter;
 import java.io.Serializable;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/ResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/ResourceAdapter.java
index a75a1b2..9d78e6a 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/ResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/ResourceAdapter.java
@@ -16,15 +16,15 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.ResourceException;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.ResourceException;
 import javax.transaction.xa.XAResource;
 import java.io.Serializable;
 
-public class ResourceAdapter implements javax.resource.spi.ResourceAdapter, Serializable{
+public class ResourceAdapter implements jakarta.resource.spi.ResourceAdapter, Serializable{
 
     private BootstrapContext context;
     public void start(BootstrapContext bootstrapContext) throws ResourceAdapterInternalException {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/Util.java b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/Util.java
index 26f9da1..ec22fef 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/Util.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/rar-accessibility/rar/src/com/sun/connector/blackbox/Util.java
@@ -16,11 +16,11 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.SecurityException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.SecurityException;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
index 9efb07c..c2822e2 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
@@ -22,7 +22,7 @@
 import java.util.StringTokenizer;
 import java.util.Enumeration;
 import com.sun.jdbcra.util.MethodExecutor;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
index e6f751b..ac7e748 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
@@ -16,11 +16,11 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.ConnectionManager;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import java.sql.DriverManager;
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
@@ -37,14 +37,14 @@
  * @author	Evani Sai Surya Kiran
  */
 
-public abstract class ManagedConnectionFactory implements javax.resource.spi.ManagedConnectionFactory, 
+public abstract class ManagedConnectionFactory implements jakarta.resource.spi.ManagedConnectionFactory, 
     java.io.Serializable {
     
     protected DataSourceSpec spec = new DataSourceSpec();
     protected transient DataSourceObjectBuilder dsObjBuilder;
     
     protected java.io.PrintWriter logWriter = null;
-    protected javax.resource.spi.ResourceAdapter ra = null;
+    protected jakarta.resource.spi.ResourceAdapter ra = null;
     
     private static Logger _logger;
     static {
@@ -62,7 +62,7 @@
             logWriter.println("In createConnectionFactory()");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, null);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, null);
         
         return cf;
     }
@@ -74,12 +74,12 @@
      * @param	cxManager	<code>ConnectionManager</code> passed by the application server
      * @return	Generic JDBC Connector implementation of <code>javax.sql.DataSource</code>
      */
-    public Object createConnectionFactory(javax.resource.spi.ConnectionManager cxManager) {
+    public Object createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager) {
         if(logWriter != null) {
-            logWriter.println("In createConnectionFactory(javax.resource.spi.ConnectionManager cxManager)");
+            logWriter.println("In createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager)");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, cxManager);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, cxManager);
         return cf; 
     }
     
@@ -100,7 +100,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public abstract javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public abstract jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException;
     
     /**
@@ -130,7 +130,7 @@
      * @return	<code>ResourceAdapter</code> associated with this <code>ManagedConnectionFactory</code> instance
      * @see	<code>setResourceAdapter</code>
      */
-    public javax.resource.spi.ResourceAdapter getResourceAdapter() {
+    public jakarta.resource.spi.ResourceAdapter getResourceAdapter() {
         if(logWriter != null) {
             logWriter.println("In getResourceAdapter");
         }
@@ -164,7 +164,7 @@
      *					parameter or the <code>Set</code> of <code>ManagedConnection</code>
      *					objects passed by the application server
      */
-    public javax.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
+    public jakarta.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
         javax.security.auth.Subject subject, ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In matchManagedConnections");
@@ -459,7 +459,7 @@
      *			<code>ManagedConnectionFactory</code> instance
      * @see	<code>getResourceAdapter</code>
      */
-    public void setResourceAdapter(javax.resource.spi.ResourceAdapter ra) {
+    public void setResourceAdapter(jakarta.resource.spi.ResourceAdapter ra) {
         this.ra = ra;   
     }
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
index a4bd6d7..e60338f 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
@@ -16,12 +16,12 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.NotSupportedException;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.NotSupportedException;
 import javax.transaction.xa.XAResource;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapterInternalException;
 
 /**
  * <code>ResourceAdapter</code> implementation for Generic JDBC Connector.
@@ -29,7 +29,7 @@
  * @version	1.0, 02/08/05
  * @author	Evani Sai Surya Kiran
  */
-public class ResourceAdapter implements javax.resource.spi.ResourceAdapter {
+public class ResourceAdapter implements jakarta.resource.spi.ResourceAdapter {
 public static final int VERSION = 2;
     public String raProp = null;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/ConnectionManager.java b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
index 688e0fc..b219cd2 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
@@ -16,10 +16,10 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 
 /**
  * ConnectionManager implementation for Generic JDBC Connector.
@@ -27,7 +27,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionManager implements javax.resource.spi.ConnectionManager{ 
+public class ConnectionManager implements jakarta.resource.spi.ConnectionManager{ 
 
     /**
      * Returns a <code>Connection </code> object to the <code>ConnectionFactory</code>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
index 997c7b1..39c7876 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
@@ -22,7 +22,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionRequestInfo implements javax.resource.spi.ConnectionRequestInfo{ 
+public class ConnectionRequestInfo implements jakarta.resource.spi.ConnectionRequestInfo{ 
 
     private String user;
     private String password;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
index 4e4ab3d..411b73f 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
@@ -16,13 +16,13 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.ConnectionManager;
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import com.sun.jdbcra.spi.ManagedConnectionFactory;
 import com.sun.jdbcra.common.DataSourceSpec;
 import java.util.logging.Logger;
@@ -62,7 +62,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In createManagedConnection");
@@ -78,7 +78,7 @@
                 dataSourceObj = (javax.sql.DataSource) dsObjBuilder.constructDataSourceObject();
             } catch(ClassCastException cce) {
 	        _logger.log(Level.SEVERE, "jdbc.exc_cce", cce);
-                throw new javax.resource.ResourceException(cce.getMessage());
+                throw new jakarta.resource.ResourceException(cce.getMessage());
             }
         }
         
@@ -98,7 +98,7 @@
 	    }
         } catch(java.sql.SQLException sqle) {
 	    _logger.log(Level.WARNING, "jdbc.exc_create_conn", sqle);
-            throw new javax.resource.spi.ResourceAllocationException("The connection could not be allocated: " + 
+            throw new jakarta.resource.spi.ResourceAllocationException("The connection could not be allocated: " + 
                 sqle.getMessage());
         }
         
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/DataSource.java b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/DataSource.java
index 8d0d0a1..2068430 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/DataSource.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/DataSource.java
@@ -20,9 +20,9 @@
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.sql.SQLFeatureNotSupportedException;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.ResourceException;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.ResourceException;
 import javax.naming.Reference;
 
 import java.util.logging.Logger;
@@ -35,7 +35,7 @@
  * @author	Binod P.G
  */
 public class DataSource implements javax.sql.DataSource, java.io.Serializable,
-		com.sun.appserv.jdbcra.DataSource, javax.resource.Referenceable{ 
+		com.sun.appserv.jdbcra.DataSource, jakarta.resource.Referenceable{ 
 				   
     private ManagedConnectionFactory mcf;
     private ConnectionManager cm;				   				   
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/LocalTransaction.java b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
index 24ae3c7..8ebe057 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
@@ -17,8 +17,8 @@
 package com.sun.jdbcra.spi;
 
 import com.sun.jdbcra.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.LocalTransactionException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.LocalTransactionException;
 
 /**
  * <code>LocalTransaction</code> implementation for Generic JDBC Connector.
@@ -26,7 +26,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class LocalTransaction implements javax.resource.spi.LocalTransaction {
+public class LocalTransaction implements jakarta.resource.spi.LocalTransaction {
     
     private ManagedConnection mc;
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/ManagedConnection.java b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
index 29e75a6..30f460a 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
@@ -16,8 +16,8 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.*;
-import javax.resource.*;
+import jakarta.resource.spi.*;
+import jakarta.resource.*;
 import javax.security.auth.Subject;
 import java.io.PrintWriter;
 import javax.transaction.xa.XAResource;
@@ -28,8 +28,8 @@
 import javax.sql.XAConnection;
 import java.sql.Connection;
 import java.sql.SQLException;
-import javax.resource.NotSupportedException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.spi.security.PasswordCredential;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.LocalTransaction;
 import com.sun.jdbcra.spi.ManagedConnectionMetaData;
@@ -44,7 +44,7 @@
  * @version	1.0, 02/07/22
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnection implements javax.resource.spi.ManagedConnection {
+public class ManagedConnection implements jakarta.resource.spi.ManagedConnection {
 
     public static final int ISNOTAPOOLEDCONNECTION = 0;
     public static final int ISPOOLEDCONNECTION = 1;
@@ -59,7 +59,7 @@
     private Hashtable connectionHandles;
     private PrintWriter logWriter;
     private PasswordCredential passwdCredential;
-    private javax.resource.spi.ManagedConnectionFactory mcf = null;
+    private jakarta.resource.spi.ManagedConnectionFactory mcf = null;
     private XAResource xar = null;
     public ConnectionHolder activeConnectionHandle;
     
@@ -100,7 +100,7 @@
      *					object passed
      */
     public ManagedConnection(PooledConnection pooledConn, java.sql.Connection sqlConn, 
-        PasswordCredential passwdCred, javax.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
+        PasswordCredential passwdCred, jakarta.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
         if(pooledConn == null && sqlConn == null) {
             throw new ResourceException("Connection object cannot be null");
         }
@@ -276,7 +276,7 @@
      * @throws	SecurityException	if there is a mismatch between the
      *        	                 	password credentials or reauthentication is requested
      */
-    public Object getConnection(Subject sub, javax.resource.spi.ConnectionRequestInfo cxReqInfo) 
+    public Object getConnection(Subject sub, jakarta.resource.spi.ConnectionRequestInfo cxReqInfo) 
         throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getConnection");
@@ -286,7 +286,7 @@
         PasswordCredential passwdCred = SecurityUtils.getPasswordCredential(this.mcf, sub, cxRequestInfo);
             
         if(SecurityUtils.isPasswordCredentialEqual(this.passwdCredential, passwdCred) == false) {
-            throw new javax.resource.spi.SecurityException("Re-authentication not supported");
+            throw new jakarta.resource.spi.SecurityException("Re-authentication not supported");
         }
         
         //GJCINT
@@ -324,7 +324,7 @@
      * @return	<code>LocalTransaction</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
+    public jakarta.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getLocalTransaction");
         }
@@ -356,7 +356,7 @@
      * @return	<code>ManagedConnectionMetaData</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
+    public jakarta.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In getMetaData");
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
index 78537a9..20f03aa 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
@@ -18,7 +18,7 @@
 
 import com.sun.jdbcra.spi.ManagedConnection;
 import java.sql.SQLException;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
@@ -28,7 +28,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnectionMetaData implements javax.resource.spi.ManagedConnectionMetaData {
+public class ManagedConnectionMetaData implements jakarta.resource.spi.ManagedConnectionMetaData {
 
     private java.sql.DatabaseMetaData dmd = null;
     private ManagedConnection mc;
@@ -111,7 +111,7 @@
      * @throws	<code>ResourceException</code>
      */
     public String getUserName() throws ResourceException {
-        javax.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
+        jakarta.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
         if(pc != null) {
             return pc.getUserName();
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/util/MethodExecutor.java b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/util/MethodExecutor.java
index cbf597b..ce321af 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/util/MethodExecutor.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/util/MethodExecutor.java
@@ -19,7 +19,7 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.InvocationTargetException;
 import java.util.Vector;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/util/SecurityUtils.java b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/util/SecurityUtils.java
index 6405c61..fc149bf 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/util/SecurityUtils.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/redeployRar/ra/src/com/sun/jdbcra/util/SecurityUtils.java
@@ -19,9 +19,9 @@
 import javax.security.auth.Subject;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import javax.resource.spi.security.PasswordCredential;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import java.util.Set;
 import java.util.Iterator;
@@ -56,7 +56,7 @@
      * @throws	<code>SecurityException</code>	if access to the <code>Subject</code> instance is denied
      */
     public static PasswordCredential getPasswordCredential(final ManagedConnectionFactory mcf,
-         final Subject subject, javax.resource.spi.ConnectionRequestInfo info) throws ResourceException {
+         final Subject subject, jakarta.resource.spi.ConnectionRequestInfo info) throws ResourceException {
 
 	if (info == null) {
             if (subject == null) {
@@ -77,7 +77,7 @@
                         }
                     });
                 if (pc == null) {
-                    throw new javax.resource.spi.SecurityException("No PasswordCredential found");
+                    throw new jakarta.resource.spi.SecurityException("No PasswordCredential found");
                 } else {
                     return pc;
                 }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/descriptor/blackbox-notx.xml b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/descriptor/blackbox-notx.xml
index 56907d2..6fd1bf5 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/descriptor/blackbox-notx.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/descriptor/blackbox-notx.xml
@@ -81,7 +81,7 @@
         </config-property>
         <authentication-mechanism>
             <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-            <credential-interface>javax.resource.security.PasswordCredential</credential-interface>
+            <credential-interface>jakarta.resource.security.PasswordCredential</credential-interface>
         </authentication-mechanism>
         <reauthentication-support>false</reauthentication-support>
     </resourceadapter>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/descriptor/blackbox-tx.xml b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/descriptor/blackbox-tx.xml
index 51be420..97e8403 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/descriptor/blackbox-tx.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/descriptor/blackbox-tx.xml
@@ -101,7 +101,7 @@
 
             <authentication-mechanism>
                 <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-                <credential-interface>javax.resource.spi.security.PasswordCredential</credential-interface>
+                <credential-interface>jakarta.resource.spi.security.PasswordCredential</credential-interface>
             </authentication-mechanism>
             <reauthentication-support>false</reauthentication-support>
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/descriptor/blackbox-xa.xml b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/descriptor/blackbox-xa.xml
index c47dcd7..5e3f65f 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/descriptor/blackbox-xa.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/descriptor/blackbox-xa.xml
@@ -81,7 +81,7 @@
         </config-property>
         <authentication-mechanism>
             <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-            <credential-interface>javax.resource.security.PasswordCredential</credential-interface>
+            <credential-interface>jakarta.resource.security.PasswordCredential</credential-interface>
         </authentication-mechanism>
         <reauthentication-support>false</reauthentication-support>
     </resourceadapter>
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/BootstrapHolder.java b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/BootstrapHolder.java
index 3042661..994cad8 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/BootstrapHolder.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/BootstrapHolder.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.XATerminator;
-import javax.resource.spi.work.WorkManager;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.XATerminator;
+import jakarta.resource.spi.work.WorkManager;
 import java.io.*;
 
 public class BootstrapHolder {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcConnection.java b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcConnection.java
index cd783d4..6a7267c 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcConnection.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionEvent;
-import javax.resource.spi.IllegalStateException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionEvent;
+import jakarta.resource.spi.IllegalStateException;
 import java.sql.*;
 import java.util.Map;
 import java.util.Properties;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcConnectionEventListener.java b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcConnectionEventListener.java
index b3afdf6..7474a1c 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcConnectionEventListener.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcConnectionEventListener.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.spi.ConnectionEvent;
-import javax.resource.spi.ConnectionEventListener;
-import javax.resource.spi.ManagedConnection;
+import jakarta.resource.spi.ConnectionEvent;
+import jakarta.resource.spi.ConnectionEventListener;
+import jakarta.resource.spi.ManagedConnection;
 import java.util.Vector;
 
 /**
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcConnectionManager.java b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcConnectionManager.java
index 93959af..4932036 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcConnectionManager.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcConnectionManager.java
@@ -16,11 +16,11 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.spi.ManagedConnectionFactory;
 import java.io.Serializable;
 
 /**
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcConnectionRequestInfo.java b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcConnectionRequestInfo.java
index 56eda59..d5244e9 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcConnectionRequestInfo.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcConnectionRequestInfo.java
@@ -16,7 +16,7 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ConnectionRequestInfo;
 
 /**
  * @author Tony Ng
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcDataSource.java b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcDataSource.java
index ea5a1a3..30b46ea 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcDataSource.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcDataSource.java
@@ -17,11 +17,11 @@
 package com.sun.connector.blackbox;
 
 import javax.naming.Reference;
-import javax.resource.Referenceable;
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.Referenceable;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
 import java.io.PrintWriter;
 import java.io.Serializable;
 import java.sql.Connection;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcManagedConnection.java b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcManagedConnection.java
index 1c006b5..ad83a45 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcManagedConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcManagedConnection.java
@@ -16,12 +16,12 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
-import javax.resource.spi.IllegalStateException;
-import javax.resource.spi.SecurityException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.IllegalStateException;
+import jakarta.resource.spi.SecurityException;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import javax.sql.XAConnection;
 import javax.transaction.xa.XAResource;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcManagedConnectionFactory.java
index 93336e6..2f6b397 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/JdbcManagedConnectionFactory.java
@@ -20,9 +20,9 @@
 
 import javax.naming.Context;
 import javax.naming.InitialContext;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import javax.sql.XAConnection;
 import javax.sql.XADataSource;
@@ -109,7 +109,7 @@
                 _logger.severe("@@@@@@ Sending ResourceErrorOccured event");
                 count = 0;
                 ((JdbcManagedConnection) obj).sendEvent(
-                        javax.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
+                        jakarta.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
                         null);
             }
             if (obj instanceof JdbcManagedConnection) {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/LocalTransactionImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/LocalTransactionImpl.java
index f59bbb2..959d4be 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/LocalTransactionImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/LocalTransactionImpl.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.EISSystemException;
-import javax.resource.spi.LocalTransaction;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.EISSystemException;
+import jakarta.resource.spi.LocalTransaction;
 import java.sql.Connection;
 import java.sql.SQLException;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/LocalTxManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/LocalTxManagedConnectionFactory.java
index 3e91ba7..ceff6e8 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/LocalTxManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/LocalTxManagedConnectionFactory.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import java.io.PrintWriter;
 import java.io.Serializable;
@@ -129,7 +129,7 @@
                      System.out.println(" Sending ConnectionErrorOccured");
                  //count = 0;
                          mc.sendEvent(
-                     javax.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
+                     jakarta.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
                      null);
                  return null;
                      }
@@ -157,7 +157,7 @@
             System.out.println(" Sending ConnectionErrorOccured");
             //count = 0;
             mc.sendEvent(
-                    javax.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
+                    jakarta.resource.spi.ConnectionEvent.CONNECTION_ERROR_OCCURRED,
                     null);
             conn = new HashSet();
             conn.add(mc);
@@ -218,7 +218,7 @@
         return this.ra;
     }
 
-    public void setResourceAdapter(javax.resource.spi.ResourceAdapter resourceAdapter) throws ResourceException {
+    public void setResourceAdapter(jakarta.resource.spi.ResourceAdapter resourceAdapter) throws ResourceException {
         this.ra = (ResourceAdapter)resourceAdapter;
     }
 }
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/MetaDataImpl.java b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/MetaDataImpl.java
index 5726b12..3c39009 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/MetaDataImpl.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/MetaDataImpl.java
@@ -16,10 +16,10 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.EISSystemException;
-import javax.resource.spi.IllegalStateException;
-import javax.resource.spi.ManagedConnectionMetaData;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.EISSystemException;
+import jakarta.resource.spi.IllegalStateException;
+import jakarta.resource.spi.ManagedConnectionMetaData;
 import java.sql.Connection;
 import java.sql.SQLException;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/NoTxManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/NoTxManagedConnectionFactory.java
index a9d2061..1bd38dd 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/NoTxManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/NoTxManagedConnectionFactory.java
@@ -16,9 +16,9 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import java.io.PrintWriter;
 import java.io.Serializable;
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/ResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/ResourceAdapter.java
index c58ca33..8f2f354 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/ResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/ResourceAdapter.java
@@ -16,15 +16,15 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.ResourceException;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.ResourceException;
 import javax.transaction.xa.XAResource;
 import java.io.Serializable;
 
-public class ResourceAdapter implements javax.resource.spi.ResourceAdapter, Serializable {
+public class ResourceAdapter implements jakarta.resource.spi.ResourceAdapter, Serializable {
 
     private BootstrapContext context;
     public void start(BootstrapContext bootstrapContext) throws ResourceAdapterInternalException {
diff --git a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/Util.java b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/Util.java
index 26f9da1..ec22fef 100755
--- a/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/Util.java
+++ b/appserver/tests/appserv-tests/devtests/connector/v3/serializabletest/rar/src/com/sun/connector/blackbox/Util.java
@@ -16,11 +16,11 @@
 
 package com.sun.connector.blackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.SecurityException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.SecurityException;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
diff --git a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
index 9efb07c..c2822e2 100644
--- a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
+++ b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/common/DataSourceObjectBuilder.java
@@ -22,7 +22,7 @@
 import java.util.StringTokenizer;
 import java.util.Enumeration;
 import com.sun.jdbcra.util.MethodExecutor;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
index e6f751b..ac7e748 100644
--- a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/1.4/ManagedConnectionFactory.java
@@ -16,11 +16,11 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.ConnectionManager;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import java.sql.DriverManager;
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
@@ -37,14 +37,14 @@
  * @author	Evani Sai Surya Kiran
  */
 
-public abstract class ManagedConnectionFactory implements javax.resource.spi.ManagedConnectionFactory, 
+public abstract class ManagedConnectionFactory implements jakarta.resource.spi.ManagedConnectionFactory, 
     java.io.Serializable {
     
     protected DataSourceSpec spec = new DataSourceSpec();
     protected transient DataSourceObjectBuilder dsObjBuilder;
     
     protected java.io.PrintWriter logWriter = null;
-    protected javax.resource.spi.ResourceAdapter ra = null;
+    protected jakarta.resource.spi.ResourceAdapter ra = null;
     
     private static Logger _logger;
     static {
@@ -62,7 +62,7 @@
             logWriter.println("In createConnectionFactory()");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, null);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, null);
         
         return cf;
     }
@@ -74,12 +74,12 @@
      * @param	cxManager	<code>ConnectionManager</code> passed by the application server
      * @return	Generic JDBC Connector implementation of <code>javax.sql.DataSource</code>
      */
-    public Object createConnectionFactory(javax.resource.spi.ConnectionManager cxManager) {
+    public Object createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager) {
         if(logWriter != null) {
-            logWriter.println("In createConnectionFactory(javax.resource.spi.ConnectionManager cxManager)");
+            logWriter.println("In createConnectionFactory(jakarta.resource.spi.ConnectionManager cxManager)");
         }
         com.sun.jdbcra.spi.DataSource cf = new com.sun.jdbcra.spi.DataSource(
-            (javax.resource.spi.ManagedConnectionFactory)this, cxManager);
+            (jakarta.resource.spi.ManagedConnectionFactory)this, cxManager);
         return cf; 
     }
     
@@ -100,7 +100,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public abstract javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public abstract jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException;
     
     /**
@@ -130,7 +130,7 @@
      * @return	<code>ResourceAdapter</code> associated with this <code>ManagedConnectionFactory</code> instance
      * @see	<code>setResourceAdapter</code>
      */
-    public javax.resource.spi.ResourceAdapter getResourceAdapter() {
+    public jakarta.resource.spi.ResourceAdapter getResourceAdapter() {
         if(logWriter != null) {
             logWriter.println("In getResourceAdapter");
         }
@@ -164,7 +164,7 @@
      *					parameter or the <code>Set</code> of <code>ManagedConnection</code>
      *					objects passed by the application server
      */
-    public javax.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
+    public jakarta.resource.spi.ManagedConnection matchManagedConnections(java.util.Set connectionSet, 
         javax.security.auth.Subject subject, ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In matchManagedConnections");
@@ -459,7 +459,7 @@
      *			<code>ManagedConnectionFactory</code> instance
      * @see	<code>getResourceAdapter</code>
      */
-    public void setResourceAdapter(javax.resource.spi.ResourceAdapter ra) {
+    public void setResourceAdapter(jakarta.resource.spi.ResourceAdapter ra) {
         this.ra = ra;   
     }
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
index 0ebd31f..555be77 100644
--- a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
+++ b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/1.4/ResourceAdapter.java
@@ -16,12 +16,12 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.NotSupportedException;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.NotSupportedException;
 import javax.transaction.xa.XAResource;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapterInternalException;
 
 /**
  * <code>ResourceAdapter</code> implementation for Generic JDBC Connector.
@@ -29,7 +29,7 @@
  * @version	1.0, 02/08/05
  * @author	Evani Sai Surya Kiran
  */
-public class ResourceAdapter implements javax.resource.spi.ResourceAdapter {
+public class ResourceAdapter implements jakarta.resource.spi.ResourceAdapter {
 
     public String raProp = null;
 
diff --git a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/1.4/ra-ds.xml b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/1.4/ra-ds.xml
index 277efba..df45777 100644
--- a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/1.4/ra-ds.xml
+++ b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/1.4/ra-ds.xml
@@ -243,7 +243,7 @@
                 
                 <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
                 
-                <credential-interface>javax.resource.spi.security.PasswordCredential</credential-interface>
+                <credential-interface>jakarta.resource.spi.security.PasswordCredential</credential-interface>
             </authentication-mechanism>
             
             <reauthentication-support>false</reauthentication-support>
diff --git a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/ConnectionManager.java b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
index 688e0fc..b219cd2 100644
--- a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
+++ b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/ConnectionManager.java
@@ -16,10 +16,10 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 
 /**
  * ConnectionManager implementation for Generic JDBC Connector.
@@ -27,7 +27,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionManager implements javax.resource.spi.ConnectionManager{ 
+public class ConnectionManager implements jakarta.resource.spi.ConnectionManager{ 
 
     /**
      * Returns a <code>Connection </code> object to the <code>ConnectionFactory</code>
diff --git a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
index 997c7b1..39c7876 100644
--- a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
+++ b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/ConnectionRequestInfo.java
@@ -22,7 +22,7 @@
  * @version	1.0, 02/07/31
  * @author	Binod P.G
  */
-public class ConnectionRequestInfo implements javax.resource.spi.ConnectionRequestInfo{ 
+public class ConnectionRequestInfo implements jakarta.resource.spi.ConnectionRequestInfo{ 
 
     private String user;
     private String password;
diff --git a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
index 880b228..b67d23a 100644
--- a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/DSManagedConnectionFactory.java
@@ -16,13 +16,13 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.ConnectionManager;
 import com.sun.jdbcra.common.DataSourceSpec;
 import com.sun.jdbcra.common.DataSourceObjectBuilder;
 import com.sun.jdbcra.util.SecurityUtils;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.spi.security.PasswordCredential;
 import com.sun.jdbcra.spi.ManagedConnectionFactory;
 import com.sun.jdbcra.common.DataSourceSpec;
 import java.util.logging.Logger;
@@ -62,7 +62,7 @@
      * @throws	ResourceAllocationException	if there is an error in allocating the 
      *						physical connection
      */
-    public javax.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
+    public jakarta.resource.spi.ManagedConnection createManagedConnection(javax.security.auth.Subject subject,
         ConnectionRequestInfo cxRequestInfo) throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In createManagedConnection");
@@ -78,7 +78,7 @@
                 dataSourceObj = (javax.sql.DataSource) dsObjBuilder.constructDataSourceObject();
             } catch(ClassCastException cce) {
 	        _logger.log(Level.SEVERE, "jdbc.exc_cce", cce);
-                throw new javax.resource.ResourceException(cce.getMessage());
+                throw new jakarta.resource.ResourceException(cce.getMessage());
             }
         }
         
@@ -99,7 +99,7 @@
         } catch(java.sql.SQLException sqle) {
             sqle.printStackTrace();
 	    _logger.log(Level.WARNING, "jdbc.exc_create_conn", sqle);
-            throw new javax.resource.spi.ResourceAllocationException("The connection could not be allocated: " + 
+            throw new jakarta.resource.spi.ResourceAllocationException("The connection could not be allocated: " + 
                 sqle.getMessage());
         } catch(Exception e){
             e.printStackTrace();   
diff --git a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/DataSource.java b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/DataSource.java
index 59d340e..30da1fe 100644
--- a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/DataSource.java
+++ b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/DataSource.java
@@ -20,9 +20,9 @@
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.sql.SQLFeatureNotSupportedException;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.ResourceException;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.ResourceException;
 import javax.naming.Reference;
 
 import java.util.logging.Logger;
@@ -35,7 +35,7 @@
  * @author	Binod P.G
  */
 public class DataSource implements javax.sql.DataSource, java.io.Serializable,
-		com.sun.appserv.jdbcra.DataSource, javax.resource.Referenceable{ 
+		com.sun.appserv.jdbcra.DataSource, jakarta.resource.Referenceable{ 
 				   
     private ManagedConnectionFactory mcf;
     private ConnectionManager cm;				   				   
diff --git a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/LocalTransaction.java b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
index 24ae3c7..8ebe057 100644
--- a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
+++ b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/LocalTransaction.java
@@ -17,8 +17,8 @@
 package com.sun.jdbcra.spi;
 
 import com.sun.jdbcra.spi.ManagedConnection;
-import javax.resource.ResourceException;
-import javax.resource.spi.LocalTransactionException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.LocalTransactionException;
 
 /**
  * <code>LocalTransaction</code> implementation for Generic JDBC Connector.
@@ -26,7 +26,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class LocalTransaction implements javax.resource.spi.LocalTransaction {
+public class LocalTransaction implements jakarta.resource.spi.LocalTransaction {
     
     private ManagedConnection mc;
     
diff --git a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/ManagedConnection.java b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
index 29e75a6..30f460a 100644
--- a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
+++ b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/ManagedConnection.java
@@ -16,8 +16,8 @@
 
 package com.sun.jdbcra.spi;
 
-import javax.resource.spi.*;
-import javax.resource.*;
+import jakarta.resource.spi.*;
+import jakarta.resource.*;
 import javax.security.auth.Subject;
 import java.io.PrintWriter;
 import javax.transaction.xa.XAResource;
@@ -28,8 +28,8 @@
 import javax.sql.XAConnection;
 import java.sql.Connection;
 import java.sql.SQLException;
-import javax.resource.NotSupportedException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.spi.security.PasswordCredential;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import com.sun.jdbcra.spi.LocalTransaction;
 import com.sun.jdbcra.spi.ManagedConnectionMetaData;
@@ -44,7 +44,7 @@
  * @version	1.0, 02/07/22
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnection implements javax.resource.spi.ManagedConnection {
+public class ManagedConnection implements jakarta.resource.spi.ManagedConnection {
 
     public static final int ISNOTAPOOLEDCONNECTION = 0;
     public static final int ISPOOLEDCONNECTION = 1;
@@ -59,7 +59,7 @@
     private Hashtable connectionHandles;
     private PrintWriter logWriter;
     private PasswordCredential passwdCredential;
-    private javax.resource.spi.ManagedConnectionFactory mcf = null;
+    private jakarta.resource.spi.ManagedConnectionFactory mcf = null;
     private XAResource xar = null;
     public ConnectionHolder activeConnectionHandle;
     
@@ -100,7 +100,7 @@
      *					object passed
      */
     public ManagedConnection(PooledConnection pooledConn, java.sql.Connection sqlConn, 
-        PasswordCredential passwdCred, javax.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
+        PasswordCredential passwdCred, jakarta.resource.spi.ManagedConnectionFactory mcf) throws ResourceException {
         if(pooledConn == null && sqlConn == null) {
             throw new ResourceException("Connection object cannot be null");
         }
@@ -276,7 +276,7 @@
      * @throws	SecurityException	if there is a mismatch between the
      *        	                 	password credentials or reauthentication is requested
      */
-    public Object getConnection(Subject sub, javax.resource.spi.ConnectionRequestInfo cxReqInfo) 
+    public Object getConnection(Subject sub, jakarta.resource.spi.ConnectionRequestInfo cxReqInfo) 
         throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getConnection");
@@ -286,7 +286,7 @@
         PasswordCredential passwdCred = SecurityUtils.getPasswordCredential(this.mcf, sub, cxRequestInfo);
             
         if(SecurityUtils.isPasswordCredentialEqual(this.passwdCredential, passwdCred) == false) {
-            throw new javax.resource.spi.SecurityException("Re-authentication not supported");
+            throw new jakarta.resource.spi.SecurityException("Re-authentication not supported");
         }
         
         //GJCINT
@@ -324,7 +324,7 @@
      * @return	<code>LocalTransaction</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
+    public jakarta.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
         if(logWriter != null) {
             logWriter.println("In getLocalTransaction");
         }
@@ -356,7 +356,7 @@
      * @return	<code>ManagedConnectionMetaData</code> instance
      * @throws	ResourceException	if the physical connection is not valid
      */
-    public javax.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
+    public jakarta.resource.spi.ManagedConnectionMetaData getMetaData() throws ResourceException {
         if(logWriter != null) {
                 logWriter.println("In getMetaData");
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
index 78537a9..20f03aa 100644
--- a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
+++ b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/spi/ManagedConnectionMetaData.java
@@ -18,7 +18,7 @@
 
 import com.sun.jdbcra.spi.ManagedConnection;
 import java.sql.SQLException;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
@@ -28,7 +28,7 @@
  * @version	1.0, 02/08/03
  * @author	Evani Sai Surya Kiran
  */
-public class ManagedConnectionMetaData implements javax.resource.spi.ManagedConnectionMetaData {
+public class ManagedConnectionMetaData implements jakarta.resource.spi.ManagedConnectionMetaData {
 
     private java.sql.DatabaseMetaData dmd = null;
     private ManagedConnection mc;
@@ -111,7 +111,7 @@
      * @throws	<code>ResourceException</code>
      */
     public String getUserName() throws ResourceException {
-        javax.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
+        jakarta.resource.spi.security.PasswordCredential pc = mc.getPasswordCredential();
         if(pc != null) {
             return pc.getUserName();
         }
diff --git a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/util/MethodExecutor.java b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/util/MethodExecutor.java
index cbf597b..ce321af 100644
--- a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/util/MethodExecutor.java
+++ b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/util/MethodExecutor.java
@@ -19,7 +19,7 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.InvocationTargetException;
 import java.util.Vector;
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 import java.util.logging.Logger;
 import java.util.logging.Level;
diff --git a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/util/SecurityUtils.java b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/util/SecurityUtils.java
index 6405c61..fc149bf 100644
--- a/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/util/SecurityUtils.java
+++ b/appserver/tests/appserv-tests/devtests/connector/web2connector/ra/src/com/sun/jdbcra/util/SecurityUtils.java
@@ -19,9 +19,9 @@
 import javax.security.auth.Subject;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
-import javax.resource.spi.security.PasswordCredential;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
 import com.sun.jdbcra.spi.ConnectionRequestInfo;
 import java.util.Set;
 import java.util.Iterator;
@@ -56,7 +56,7 @@
      * @throws	<code>SecurityException</code>	if access to the <code>Subject</code> instance is denied
      */
     public static PasswordCredential getPasswordCredential(final ManagedConnectionFactory mcf,
-         final Subject subject, javax.resource.spi.ConnectionRequestInfo info) throws ResourceException {
+         final Subject subject, jakarta.resource.spi.ConnectionRequestInfo info) throws ResourceException {
 
 	if (info == null) {
             if (subject == null) {
@@ -77,7 +77,7 @@
                         }
                     });
                 if (pc == null) {
-                    throw new javax.resource.spi.SecurityException("No PasswordCredential found");
+                    throw new jakarta.resource.spi.SecurityException("No PasswordCredential found");
                 } else {
                     return pc;
                 }
diff --git a/appserver/tests/appserv-tests/devtests/deployment/dol/validation/ear/rar/META-INF/ra.xml b/appserver/tests/appserv-tests/devtests/deployment/dol/validation/ear/rar/META-INF/ra.xml
index e73ffaa..5959ba7 100644
--- a/appserver/tests/appserv-tests/devtests/deployment/dol/validation/ear/rar/META-INF/ra.xml
+++ b/appserver/tests/appserv-tests/devtests/deployment/dol/validation/ear/rar/META-INF/ra.xml
@@ -63,13 +63,13 @@
                 <config-property-value>DBURL</config-property-value>
             </config-property>
             <connectionfactory-interface>
-                javax.resource.cci.ConnectionFactory
+                jakarta.resource.cci.ConnectionFactory
             </connectionfactory-interface>
             <connectionfactory-impl-class>
                 com.sun.connector.cciblackbox.CciConnectionFactory
             </connectionfactory-impl-class>
             <connection-interface>
-                javax.resource.cci.Connection
+                jakarta.resource.cci.Connection
             </connection-interface>
             <connection-impl-class>
                 com.sun.connector.cciblackbox.CciConnection
@@ -82,7 +82,7 @@
                 BasicPassword
             </authentication-mechanism-type>
             <credential-interface>
-                javax.resource.spi.security.PasswordCredential
+                jakarta.resource.spi.security.PasswordCredential
             </credential-interface>
          </authentication-mechanism>
          <reauthentication-support>false</reauthentication-support>
diff --git a/appserver/tests/appserv-tests/devtests/deployment/dol/validation/rar/META-INF/ra.xml b/appserver/tests/appserv-tests/devtests/deployment/dol/validation/rar/META-INF/ra.xml
index b2a4498..0a8c2e6 100644
--- a/appserver/tests/appserv-tests/devtests/deployment/dol/validation/rar/META-INF/ra.xml
+++ b/appserver/tests/appserv-tests/devtests/deployment/dol/validation/rar/META-INF/ra.xml
@@ -35,9 +35,9 @@
     </license>
     <resourceadapter>
         <managedconnectionfactory-class>com.sun.connector.cciblackbox.CciLocalTxManagedConnectionFactory</managedconnectionfactory-class>
-        <connectionfactory-interface>javax.resource.cci.ConnectionFactory</connectionfactory-interface>
+        <connectionfactory-interface>jakarta.resource.cci.ConnectionFactory</connectionfactory-interface>
         <connectionfactory-impl-class>com.sun.connector.cciblackbox.CciConnectionFactory</connectionfactory-impl-class>
-        <connection-interface>javax.resource.cci.Connection</connection-interface>
+        <connection-interface>jakarta.resource.cci.Connection</connection-interface>
         <connection-impl-class>com.sun.connector.cciblackbox.CciConnection</connection-impl-class>
         <transaction-support>LocalTransaction</transaction-support>
         <config-property>
@@ -49,7 +49,7 @@
         <authentication-mechanism>
            <description>auto mechanism</description>
             <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-            <credential-interface>javax.resource.spi.security.PasswordCredential</credential-interface>
+            <credential-interface>jakarta.resource.spi.security.PasswordCredential</credential-interface>
         </authentication-mechanism>
         <reauthentication-support>false</reauthentication-support>
         <security-permission>
diff --git a/appserver/tests/appserv-tests/devtests/ejb/ejb32/mdb/ra/CommandActivationSpec.java b/appserver/tests/appserv-tests/devtests/ejb/ejb32/mdb/ra/CommandActivationSpec.java
index 49522cc..e36aa1d 100644
--- a/appserver/tests/appserv-tests/devtests/ejb/ejb32/mdb/ra/CommandActivationSpec.java
+++ b/appserver/tests/appserv-tests/devtests/ejb/ejb32/mdb/ra/CommandActivationSpec.java
@@ -16,9 +16,9 @@
 
 package com.sun.s1asdev.ejb.ejb32.mdb.ra;
 
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.InvalidPropertyException;
-import javax.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.InvalidPropertyException;
+import jakarta.resource.spi.ResourceAdapter;
 
 /**
  * @author David Blevins
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 eb798fd..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
@@ -16,13 +16,13 @@
 
 package com.sun.s1asdev.ejb.ejb32.mdb.ra;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.endpoint.MessageEndpoint;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.endpoint.MessageEndpoint;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
 import javax.transaction.xa.XAResource;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
diff --git a/appserver/tests/appserv-tests/devtests/web/programmaticLogin/server.policy b/appserver/tests/appserv-tests/devtests/web/programmaticLogin/server.policy
index 75038e6..6fbb8eb 100644
--- a/appserver/tests/appserv-tests/devtests/web/programmaticLogin/server.policy
+++ b/appserver/tests/appserv-tests/devtests/web/programmaticLogin/server.policy
@@ -88,7 +88,7 @@
 // Following grant block is only required by Connectors. If Connectors
 // are not in use the recommendation is to remove this grant.
 grant {
-        permission javax.security.auth.PrivateCredentialPermission "javax.resource.spi.security.PasswordCredential * \"*\"","read";
+        permission javax.security.auth.PrivateCredentialPermission "jakarta.resource.spi.security.PasswordCredential * \"*\"","read";
 };
 
 // Following grant block is only required for Reflection. If Reflection
diff --git a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnection.java b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnection.java
index 646e98f..230f184 100644
--- a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnection.java
+++ b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnection.java
@@ -19,13 +19,13 @@
 import java.sql.SQLException;
 
 import javax.naming.Context;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.cci.ConnectionMetaData;
-import javax.resource.cci.Interaction;
-import javax.resource.cci.ResultSetInfo;
-import javax.resource.spi.ConnectionEvent;
-import javax.resource.spi.IllegalStateException;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.cci.ConnectionMetaData;
+import jakarta.resource.cci.Interaction;
+import jakarta.resource.cci.ResultSetInfo;
+import jakarta.resource.spi.ConnectionEvent;
+import jakarta.resource.spi.IllegalStateException;
 import javax.rmi.PortableRemoteObject;
 
 import wlstest.functional.connector.common.apps.ejb.test_proxy.ConnectorTest;
@@ -37,7 +37,7 @@
  *
  * @author Sheetal Vartak
  */
-public class CciConnection implements javax.resource.cci.Connection {
+public class CciConnection implements jakarta.resource.cci.Connection {
 
   private boolean destroyed;
 
@@ -57,7 +57,7 @@
     return new CciSQLInteraction(this);
   }
 
-  public javax.resource.cci.LocalTransaction getLocalTransaction() throws ResourceException {
+  public jakarta.resource.cci.LocalTransaction getLocalTransaction() throws ResourceException {
     try {
       java.sql.Connection con = getJdbcConnection();
       if (con.getTransactionIsolation() == con.TRANSACTION_NONE) {
diff --git a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionEventListener.java b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionEventListener.java
index 02d1401..54955f5 100644
--- a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionEventListener.java
+++ b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionEventListener.java
@@ -18,9 +18,9 @@
 
 import java.util.Vector;
 
-import javax.resource.spi.ConnectionEvent;
-import javax.resource.spi.ConnectionEventListener;
-import javax.resource.spi.ManagedConnection;
+import jakarta.resource.spi.ConnectionEvent;
+import jakarta.resource.spi.ConnectionEventListener;
+import jakarta.resource.spi.ManagedConnection;
 
 /**
  * The connector architecture provides an event callback mechanism that
diff --git a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionFactory.java b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionFactory.java
index 111bf46..fa41849 100644
--- a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionFactory.java
+++ b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionFactory.java
@@ -19,15 +19,15 @@
 import java.io.Serializable;
 
 import javax.naming.Reference;
-import javax.resource.Referenceable;
-import javax.resource.ResourceException;
-import javax.resource.cci.ConnectionFactory;
-import javax.resource.cci.ConnectionSpec;
-import javax.resource.cci.RecordFactory;
-import javax.resource.cci.ResourceAdapterMetaData;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.Referenceable;
+import jakarta.resource.ResourceException;
+import jakarta.resource.cci.ConnectionFactory;
+import jakarta.resource.cci.ConnectionSpec;
+import jakarta.resource.cci.RecordFactory;
+import jakarta.resource.cci.ResourceAdapterMetaData;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
 
 /**
  * This implementation class provides provides an inteface for getting 
@@ -56,18 +56,18 @@
     this.mcf = mcf;
   }
 
-  public javax.resource.cci.Connection getConnection() throws ResourceException {
-    javax.resource.cci.Connection con = null;
-    con = (javax.resource.cci.Connection) cm.allocateConnection(mcf, null);
+  public jakarta.resource.cci.Connection getConnection() throws ResourceException {
+    jakarta.resource.cci.Connection con = null;
+    con = (jakarta.resource.cci.Connection) cm.allocateConnection(mcf, null);
     return con;
   }
 
-  public javax.resource.cci.Connection getConnection(ConnectionSpec properties)
+  public jakarta.resource.cci.Connection getConnection(ConnectionSpec properties)
       throws ResourceException {
-    javax.resource.cci.Connection con = null;
+    jakarta.resource.cci.Connection con = null;
     ConnectionRequestInfo info = new CciConnectionRequestInfo(
         ((CciConnectionSpec) properties).getUser(), ((CciConnectionSpec) properties).getPassword());
-    con = (javax.resource.cci.Connection) cm.allocateConnection(mcf, info);
+    con = (jakarta.resource.cci.Connection) cm.allocateConnection(mcf, info);
     return con;
   }
 
diff --git a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionManager.java b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionManager.java
index 305f04f..206fc2c 100644
--- a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionManager.java
+++ b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionManager.java
@@ -18,11 +18,11 @@
 
 import java.io.Serializable;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.spi.ManagedConnectionFactory;
 
 /**
  * The default ConnectionManager implementation for the
diff --git a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionMetaDataImpl.java b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionMetaDataImpl.java
index e68efbb..8ea9f5f 100644
--- a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionMetaDataImpl.java
+++ b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionMetaDataImpl.java
@@ -18,9 +18,9 @@
 
 import java.sql.SQLException;
 
-import javax.resource.ResourceException;
-import javax.resource.cci.ConnectionMetaData;
-import javax.resource.spi.EISSystemException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.cci.ConnectionMetaData;
+import jakarta.resource.spi.EISSystemException;
 
 /**
  * @author Sheetal Vartak
diff --git a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionRequestInfo.java b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionRequestInfo.java
index eeb65c5..d7d6f99 100644
--- a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionRequestInfo.java
+++ b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionRequestInfo.java
@@ -16,7 +16,7 @@
 
 package com.sun.connector.cciblackbox;
 
-import javax.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ConnectionRequestInfo;
 
 /**
  * This implementation class enables a resource adapter to pass its own
diff --git a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionSpec.java b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionSpec.java
index ce57aa9..89678a9 100644
--- a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionSpec.java
+++ b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciConnectionSpec.java
@@ -23,7 +23,7 @@
  *
  * @author Sheetal Vartak
  */
-public class CciConnectionSpec implements javax.resource.cci.ConnectionSpec {
+public class CciConnectionSpec implements jakarta.resource.cci.ConnectionSpec {
 
   private String user;
 
diff --git a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciIndexedRecord.java b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciIndexedRecord.java
index f5e2a72..70541b3 100644
--- a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciIndexedRecord.java
+++ b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciIndexedRecord.java
@@ -28,7 +28,7 @@
 import java.util.ListIterator;
 import java.util.Vector;
 
-public class CciIndexedRecord implements javax.resource.cci.IndexedRecord {
+public class CciIndexedRecord implements jakarta.resource.cci.IndexedRecord {
 
   private String recordName;
 
diff --git a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciInteraction.java b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciInteraction.java
index e4afa73..0077f63 100644
--- a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciInteraction.java
+++ b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciInteraction.java
@@ -26,12 +26,12 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.resource.ResourceException;
-import javax.resource.cci.IndexedRecord;
-import javax.resource.cci.Interaction;
-import javax.resource.cci.InteractionSpec;
-import javax.resource.cci.Record;
-import javax.resource.cci.ResourceWarning;
+import jakarta.resource.ResourceException;
+import jakarta.resource.cci.IndexedRecord;
+import jakarta.resource.cci.Interaction;
+import jakarta.resource.cci.InteractionSpec;
+import jakarta.resource.cci.Record;
+import jakarta.resource.cci.ResourceWarning;
 
 /**
  * This implementation class enables a component to execute EIS functions.
@@ -39,15 +39,15 @@
  */
 public class CciInteraction implements Interaction {
 
-  protected javax.resource.cci.Connection connection;
+  protected jakarta.resource.cci.Connection connection;
 
   protected CallableStatement csmt;
 
-  public CciInteraction(javax.resource.cci.Connection con) {
+  public CciInteraction(jakarta.resource.cci.Connection con) {
     connection = con;
   }
 
-  public javax.resource.cci.Connection getConnection() {
+  public jakarta.resource.cci.Connection getConnection() {
     return connection;
   }
 
diff --git a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciInteractionSpec.java b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciInteractionSpec.java
index d7dbf40..5385f88 100644
--- a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciInteractionSpec.java
+++ b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciInteractionSpec.java
@@ -19,7 +19,7 @@
 import java.beans.PropertyChangeListener;
 import java.beans.PropertyChangeSupport;
 
-import javax.resource.cci.InteractionSpec;
+import jakarta.resource.cci.InteractionSpec;
 
 /**
  * This implementation class holds properties for driving an Interaction
diff --git a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciLocalTransactionImpl.java b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciLocalTransactionImpl.java
index 9f28b6f..5a9a0d7 100644
--- a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciLocalTransactionImpl.java
+++ b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciLocalTransactionImpl.java
@@ -16,13 +16,13 @@
 
 package com.sun.connector.cciblackbox;
 
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 /**This implementation class defines a local transaction demarcation 
  * at the application level.
  * @author Sheetal Vartak
  */
-public class CciLocalTransactionImpl implements javax.resource.cci.LocalTransaction {
+public class CciLocalTransactionImpl implements jakarta.resource.cci.LocalTransaction {
 
   private CciManagedConnection mc;
 
diff --git a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciLocalTxManagedConnectionFactory.java b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciLocalTxManagedConnectionFactory.java
index c69aaae..e236542 100644
--- a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciLocalTxManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciLocalTxManagedConnectionFactory.java
@@ -24,13 +24,13 @@
 import java.util.Iterator;
 import java.util.Set;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.EISSystemException;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.EISSystemException;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 
 /**
diff --git a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciManagedConnection.java b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciManagedConnection.java
index ee3f987..352cc27 100644
--- a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciManagedConnection.java
+++ b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciManagedConnection.java
@@ -23,16 +23,16 @@
 import java.util.Iterator;
 import java.util.Set;
 
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionEventListener;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.IllegalStateException;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ManagedConnectionMetaData;
-import javax.resource.spi.SecurityException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionEventListener;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.IllegalStateException;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.ManagedConnectionMetaData;
+import jakarta.resource.spi.SecurityException;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import javax.sql.XAConnection;
 import javax.transaction.xa.XAResource;
@@ -212,7 +212,7 @@
     }
   }
 
-  public javax.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
+  public jakarta.resource.spi.LocalTransaction getLocalTransaction() throws ResourceException {
     if (!supportsLocalTx) {
       throw new NotSupportedException("Local transaction not supported");
     } else {
diff --git a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciManagedConnectionFactory.java b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciManagedConnectionFactory.java
index b885311..a5cfc6c 100644
--- a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciManagedConnectionFactory.java
@@ -27,10 +27,10 @@
 import java.util.Iterator;
 import java.util.Set;
 import javax.naming.Context;
-import javax.resource.NotSupportedException;
-import javax.resource.ResourceException;
-import javax.resource.spi.*;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.NotSupportedException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.*;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 import javax.sql.XAConnection;
 import javax.sql.XADataSource;
diff --git a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciManagedConnectionMetaDataImpl.java b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciManagedConnectionMetaDataImpl.java
index 69da7a0..0d54b98 100644
--- a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciManagedConnectionMetaDataImpl.java
+++ b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciManagedConnectionMetaDataImpl.java
@@ -19,10 +19,10 @@
 import java.sql.Connection;
 import java.sql.SQLException;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.EISSystemException;
-import javax.resource.spi.IllegalStateException;
-import javax.resource.spi.ManagedConnectionMetaData;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.EISSystemException;
+import jakarta.resource.spi.IllegalStateException;
+import jakarta.resource.spi.ManagedConnectionMetaData;
 
 /**
  * This class gives info about a ManagedConnection and the connected EIS 
diff --git a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciNoTxManagedConnectionFactory.java b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciNoTxManagedConnectionFactory.java
index 0cfc9f5..80b0fb2 100644
--- a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciNoTxManagedConnectionFactory.java
+++ b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciNoTxManagedConnectionFactory.java
@@ -24,13 +24,13 @@
 import java.util.Iterator;
 import java.util.Set;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.EISSystemException;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionManager;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.EISSystemException;
+import jakarta.resource.spi.ManagedConnection;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 
 /**
diff --git a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciRecordFactory.java b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciRecordFactory.java
index 97c3a73..bb6ff2a 100644
--- a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciRecordFactory.java
+++ b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciRecordFactory.java
@@ -16,16 +16,16 @@
 
 package com.sun.connector.cciblackbox;
 
-import javax.resource.ResourceException;
-import javax.resource.cci.IndexedRecord;
-import javax.resource.cci.MappedRecord;
+import jakarta.resource.ResourceException;
+import jakarta.resource.cci.IndexedRecord;
+import jakarta.resource.cci.MappedRecord;
 
 /**
  * This implementation class is used for creating IndexedRecord or MappedRecord
  * instances.
  */
 
-public class CciRecordFactory implements javax.resource.cci.RecordFactory {
+public class CciRecordFactory implements jakarta.resource.cci.RecordFactory {
 
   public CciRecordFactory() {
   }
diff --git a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciResourceAdapterMetaData.java b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciResourceAdapterMetaData.java
index baadbd1..e00682f 100644
--- a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciResourceAdapterMetaData.java
+++ b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/CciResourceAdapterMetaData.java
@@ -16,7 +16,7 @@
 
 package com.sun.connector.cciblackbox;
 
-import javax.resource.cci.ResourceAdapterMetaData;
+import jakarta.resource.cci.ResourceAdapterMetaData;
 
 /**
  * this implementation class provides info about the capabilities of a 
@@ -89,7 +89,7 @@
 
     /* Method method;
       Class interactionClass = 
-    Class.forName("javax.resource.cci.Interaction");
+    Class.forName("jakarta.resource.cci.Interaction");
     try {
           method = 
       interactionClass.getDeclaredMethod(InteractionSpec,Record,Record);
@@ -107,7 +107,7 @@
   public boolean supportsExecuteWithInputRecordOnly() {
     /*  Method method;
       Class interactionClass = 
-    Class.forName("javax.resource.cci.Interaction");
+    Class.forName("jakarta.resource.cci.Interaction");
     try {
           method =
       interactionClass.getDeclaredMethod(InteractionSpec,Record);
diff --git a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/SpiLocalTransactionImpl.java b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/SpiLocalTransactionImpl.java
index aaae48d..68cd656 100644
--- a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/SpiLocalTransactionImpl.java
+++ b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/SpiLocalTransactionImpl.java
@@ -16,12 +16,12 @@
 
 package com.sun.connector.cciblackbox;
 
-import javax.resource.ResourceException;
+import jakarta.resource.ResourceException;
 
 /**
  * @author Sheetal Vartak
  */
-public class SpiLocalTransactionImpl implements javax.resource.spi.LocalTransaction {
+public class SpiLocalTransactionImpl implements jakarta.resource.spi.LocalTransaction {
 
   private CciManagedConnection mc;
 
diff --git a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/TransactionImpl.java b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/TransactionImpl.java
index 161cdcc..c0fb859 100644
--- a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/TransactionImpl.java
+++ b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/TransactionImpl.java
@@ -18,9 +18,9 @@
 
 import java.sql.SQLException;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionEvent;
-import javax.resource.spi.EISSystemException;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionEvent;
+import jakarta.resource.spi.EISSystemException;
 
 /**
  * This class captures the common methods between the spi and cci
diff --git a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/Util.java b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/Util.java
index fbdf0b8..9065b0e 100644
--- a/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/Util.java
+++ b/appserver/tests/appserv-tests/sqetests/connector/lib/cciblackbox-tx/com/sun/connector/cciblackbox/Util.java
@@ -21,11 +21,11 @@
 import java.util.Iterator;
 import java.util.Set;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.SecurityException;
-import javax.resource.spi.security.PasswordCredential;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ConnectionRequestInfo;
+import jakarta.resource.spi.ManagedConnectionFactory;
+import jakarta.resource.spi.SecurityException;
+import jakarta.resource.spi.security.PasswordCredential;
 import javax.security.auth.Subject;
 
 /** 
diff --git a/appserver/tests/embedded/scatteredarchive/src/main/java/org/glassfish/tests/embedded/scatteredarchive/ScatteredArchiveTestRA.java b/appserver/tests/embedded/scatteredarchive/src/main/java/org/glassfish/tests/embedded/scatteredarchive/ScatteredArchiveTestRA.java
index e01a8be..630e170 100644
--- a/appserver/tests/embedded/scatteredarchive/src/main/java/org/glassfish/tests/embedded/scatteredarchive/ScatteredArchiveTestRA.java
+++ b/appserver/tests/embedded/scatteredarchive/src/main/java/org/glassfish/tests/embedded/scatteredarchive/ScatteredArchiveTestRA.java
@@ -16,12 +16,12 @@
 
 package org.glassfish.tests.embedded.scatteredarchive;
 
-import javax.resource.ResourceException;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
+import jakarta.resource.ResourceException;
+import jakarta.resource.spi.ActivationSpec;
+import jakarta.resource.spi.BootstrapContext;
+import jakarta.resource.spi.ResourceAdapter;
+import jakarta.resource.spi.ResourceAdapterInternalException;
+import jakarta.resource.spi.endpoint.MessageEndpointFactory;
 import javax.transaction.xa.XAResource;
 import java.util.logging.Logger;
 
diff --git a/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci-embedded/build.xml b/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci-embedded/build.xml
index 8122492..e66cd71 100755
--- a/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci-embedded/build.xml
+++ b/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci-embedded/build.xml
@@ -55,7 +55,7 @@
     <target name="create-pool">
                 <antcall target="create-connector-connpool-common">
                 <param name="ra.name" value="connector-embedded-cciApp#cciblackbox-${tx.mode}"/>
-                <param name="connection.defname" value="javax.resource.cci.ConnectionFactory"/>
+                <param name="connection.defname" value="jakarta.resource.cci.ConnectionFactory"/>
                 <param name="connector.conpool.name" value="EMBEDDED-CCI-CONNPOOL"/>
                 </antcall>
     </target>
diff --git a/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci-embedded/descriptor/ejb-jar.xml b/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci-embedded/descriptor/ejb-jar.xml
index 4fc9f74..40014a3 100644
--- a/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci-embedded/descriptor/ejb-jar.xml
+++ b/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci-embedded/descriptor/ejb-jar.xml
@@ -45,7 +45,7 @@
       </security-identity>
       <resource-ref>
         <res-ref-name>eis/EMBEDDEDCCIEIS</res-ref-name>
-        <res-type>javax.resource.cci.ConnectionFactory</res-type>
+        <res-type>jakarta.resource.cci.ConnectionFactory</res-type>
         <res-auth>Application</res-auth>
         <res-sharing-scope>Shareable</res-sharing-scope>
       </resource-ref>
diff --git a/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci-embedded/descriptor/ra.xml b/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci-embedded/descriptor/ra.xml
index e697cc6..03d704c 100644
--- a/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci-embedded/descriptor/ra.xml
+++ b/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci-embedded/descriptor/ra.xml
@@ -26,9 +26,9 @@
     <version>1.0</version>
     <resourceadapter>
         <managedconnectionfactory-class>com.sun.connector.cciblackbox.CciLocalTxManagedConnectionFactory</managedconnectionfactory-class>
-        <connectionfactory-interface>javax.resource.cci.ConnectionFactory</connectionfactory-interface>
+        <connectionfactory-interface>jakarta.resource.cci.ConnectionFactory</connectionfactory-interface>
         <connectionfactory-impl-class>com.sun.connector.cciblackbox.CciConnectionFactory</connectionfactory-impl-class>
-        <connection-interface>javax.resource.cci.Connection</connection-interface>
+        <connection-interface>jakarta.resource.cci.Connection</connection-interface>
         <connection-impl-class>com.sun.connector.cciblackbox.CciConnection</connection-impl-class>
         <transaction-support>LocalTransaction</transaction-support>
         <config-property>
@@ -38,7 +38,7 @@
         </config-property>
         <authentication-mechanism>
             <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-            <credential-interface>javax.resource.security.PasswordCredential</credential-interface>
+            <credential-interface>jakarta.resource.security.PasswordCredential</credential-interface>
         </authentication-mechanism>
         <reauthentication-support>false</reauthentication-support>
     </resourceadapter>
diff --git a/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci-embedded/ejb/CoffeeBean.java b/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci-embedded/ejb/CoffeeBean.java
index 817e3d7..b4ccb7c 100644
--- a/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci-embedded/ejb/CoffeeBean.java
+++ b/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci-embedded/ejb/CoffeeBean.java
@@ -19,8 +19,8 @@
 import java.math.BigDecimal;
 import java.util.*;
 import jakarta.ejb.*;
-import javax.resource.cci.*;
-import javax.resource.ResourceException;
+import jakarta.resource.cci.*;
+import jakarta.resource.ResourceException;
 import javax.naming.*;
 import com.sun.connector.cciblackbox.*;
 
@@ -41,7 +41,7 @@
             Context ic = new InitialContext();
             user = (String) ic.lookup("java:comp/env/user");
             password = (String) ic.lookup("java:comp/env/password");
-            cf = (javax.resource.cci.ConnectionFactory) ic.lookup("java:comp/env/eis/EMBEDDEDCCIEIS");
+            cf = (jakarta.resource.cci.ConnectionFactory) ic.lookup("java:comp/env/eis/EMBEDDEDCCIEIS");
         } catch (NamingException ex) {
             ex.printStackTrace();
         }
diff --git a/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci/build.xml b/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci/build.xml
index 4fc2215..9fdb850 100755
--- a/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci/build.xml
+++ b/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci/build.xml
@@ -140,7 +140,7 @@
     <antcall target="create-connector-connpool-common">
         <param name="ra.name" value="cciblackbox-${tx.mode}"/>
         <param name="connection.defname" 
-            value="javax.resource.cci.ConnectionFactory"/>
+            value="jakarta.resource.cci.ConnectionFactory"/>
         <param name="connector.conpool.name" value="CCI-CONNPOOL"/>
     </antcall>
 </target>
diff --git a/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci/descriptor/ejb-jar.xml b/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci/descriptor/ejb-jar.xml
index 58d271e..c8bf477 100644
--- a/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci/descriptor/ejb-jar.xml
+++ b/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci/descriptor/ejb-jar.xml
@@ -45,7 +45,7 @@
       </security-identity>
       <resource-ref>
         <res-ref-name>eis/CCIEIS</res-ref-name>
-        <res-type>javax.resource.cci.ConnectionFactory</res-type>
+        <res-type>jakarta.resource.cci.ConnectionFactory</res-type>
         <res-auth>Application</res-auth>
         <res-sharing-scope>Shareable</res-sharing-scope>
       </resource-ref>
diff --git a/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci/descriptor/ra.xml b/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci/descriptor/ra.xml
index e697cc6..03d704c 100644
--- a/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci/descriptor/ra.xml
+++ b/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci/descriptor/ra.xml
@@ -26,9 +26,9 @@
     <version>1.0</version>
     <resourceadapter>
         <managedconnectionfactory-class>com.sun.connector.cciblackbox.CciLocalTxManagedConnectionFactory</managedconnectionfactory-class>
-        <connectionfactory-interface>javax.resource.cci.ConnectionFactory</connectionfactory-interface>
+        <connectionfactory-interface>jakarta.resource.cci.ConnectionFactory</connectionfactory-interface>
         <connectionfactory-impl-class>com.sun.connector.cciblackbox.CciConnectionFactory</connectionfactory-impl-class>
-        <connection-interface>javax.resource.cci.Connection</connection-interface>
+        <connection-interface>jakarta.resource.cci.Connection</connection-interface>
         <connection-impl-class>com.sun.connector.cciblackbox.CciConnection</connection-impl-class>
         <transaction-support>LocalTransaction</transaction-support>
         <config-property>
@@ -38,7 +38,7 @@
         </config-property>
         <authentication-mechanism>
             <authentication-mechanism-type>BasicPassword</authentication-mechanism-type>
-            <credential-interface>javax.resource.security.PasswordCredential</credential-interface>
+            <credential-interface>jakarta.resource.security.PasswordCredential</credential-interface>
         </authentication-mechanism>
         <reauthentication-support>false</reauthentication-support>
     </resourceadapter>
diff --git a/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci/ejb/CoffeeBean.java b/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci/ejb/CoffeeBean.java
index 2e668cc..2883589 100644
--- a/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci/ejb/CoffeeBean.java
+++ b/appserver/tests/v2-tests/appserv-tests/sqetests/connector/cci/ejb/CoffeeBean.java
@@ -19,8 +19,8 @@
 import java.math.BigDecimal;
 import java.util.*;
 import jakarta.ejb.*;
-import javax.resource.cci.*;
-import javax.resource.ResourceException;
+import jakarta.resource.cci.*;
+import jakarta.resource.ResourceException;
 import javax.naming.*;
 import com.sun.connector.cciblackbox.*;
 
@@ -41,7 +41,7 @@
             Context ic = new InitialContext();
             user = (String) ic.lookup("java:comp/env/user");
             password = (String) ic.lookup("java:comp/env/password");
-            cf = (javax.resource.cci.ConnectionFactory) ic.lookup("java:comp/env/eis/CCIEIS");
+            cf = (jakarta.resource.cci.ConnectionFactory) ic.lookup("java:comp/env/eis/CCIEIS");
         } catch (NamingException ex) {
             ex.printStackTrace();
         }
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/CheckResourceAdapterClass.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/CheckResourceAdapterClass.java
index 4d8a2f6..98f502b 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/CheckResourceAdapterClass.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/CheckResourceAdapterClass.java
@@ -31,7 +31,7 @@
 
 /**
  * Test that "resourceadapter-class" implements 
- * "javax.resource.spi.ResourceAdapter".
+ * "jakarta.resource.spi.ResourceAdapter".
  *
  * @author Anisha Malhotra 
  * @version 
@@ -43,7 +43,7 @@
 
   /** <p>
    * Test that "resourceadapter-class" implements 
-   * "javax.resource.spi.ResourceAdapter".
+   * "jakarta.resource.spi.ResourceAdapter".
    * </p>
    *
    * @param descriptor deployment descriptor for the rar file
@@ -102,14 +102,14 @@
            new Object[] {resourceAdapterClass}));
       return result;
     }
-    if(!isImplementorOf(implClass, "javax.resource.spi.ResourceAdapter"))
+    if(!isImplementorOf(implClass, "jakarta.resource.spi.ResourceAdapter"))
     {
       result.addErrorDetails(smh.getLocalString
           ("tests.componentNameConstructor",
            "For [ {0} ]",
            new Object[] {compName.toString()}));
       result.failed(smh.getLocalString(getClass().getName() + ".failed",
-            "Error: resourceadapter-class [ {0} ] does not implement javax.resource.spi.ResourceAdapter",
+            "Error: resourceadapter-class [ {0} ] does not implement jakarta.resource.spi.ResourceAdapter",
             new Object[] {resourceAdapterClass}));
     }
     else
@@ -119,7 +119,7 @@
            "For [ {0} ]",
            new Object[] {compName.toString()}));	
       result.passed(smh.getLocalString(getClass().getName() + ".passed",
-            "Success: resourceadapter-class implements javax.resource.spi.ResourceAdapter"));                     
+            "Success: resourceadapter-class implements jakarta.resource.spi.ResourceAdapter"));                     
     }
     return result;                
   }
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/ConnectionRequestInfoImplEquals.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/ConnectionRequestInfoImplEquals.java
index 8619162..d199e3c 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/ConnectionRequestInfoImplEquals.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/ConnectionRequestInfoImplEquals.java
@@ -55,7 +55,7 @@
         // let's get first the the default implementation of the ConnectionManager
         //File jarFile = Verifier.getJarFile(descriptor.getModuleDescriptor().getArchiveUri());            
 //        File f=Verifier.getArchiveFile(descriptor.getModuleDescriptor().getArchiveUri());
-        Class c = findImplementorOf(descriptor, "javax.resource.spi.ConnectionRequestInfo");
+        Class c = findImplementorOf(descriptor, "jakarta.resource.spi.ConnectionRequestInfo");
         
         if (c == null) {
 	    result.addNaDetails(smh.getLocalString
@@ -65,7 +65,7 @@
             result.notApplicable(smh.getLocalString
 	    ("com.sun.enterprise.tools.verifier.tests.connector.ConnectorTest.optionalInterfaceMissing", 
             "Warning: There is no implementation of the optional [ {0} ] interface",
-            new Object[] {"javax.resource.spi.ConnectionRequestInfo"}));  
+            new Object[] {"jakarta.resource.spi.ConnectionRequestInfo"}));  
         } else {
             // An implementation of the interface is provided, let's check the equals method
             checkMethodImpl(c, "equals", new Class[] {Object.class}, "public boolean equals(java.lang.Object)", result);                    
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/ConnectionRequestInfoImplHashcode.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/ConnectionRequestInfoImplHashcode.java
index 7145b28..1dd2f3d 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/ConnectionRequestInfoImplHashcode.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/ConnectionRequestInfoImplHashcode.java
@@ -53,7 +53,7 @@
 	ComponentNameConstructor compName = getVerifierContext().getComponentNameConstructor();
         
 //        File f=Verifier.getArchiveFile(descriptor.getModuleDescriptor().getArchiveUri());     
-        Class c = findImplementorOf(descriptor, "javax.resource.spi.ConnectionRequestInfo");
+        Class c = findImplementorOf(descriptor, "jakarta.resource.spi.ConnectionRequestInfo");
         if (c == null) {
             result.addNaDetails(smh.getLocalString
 				  ("tests.componentNameConstructor",
@@ -62,7 +62,7 @@
             result.notApplicable(smh.getLocalString
 	    ("com.sun.enterprise.tools.verifier.tests.connector.ConnectorTest.optionalInterfaceMissing", 
             "Warning: There is no implementation of the optional [ {0} ] interface",
-            new Object[] {"javax.resource.spi.ConnectionRequestInfo"}));  
+            new Object[] {"jakarta.resource.spi.ConnectionRequestInfo"}));  
         } else {
             // An implementation of the interface is provided, let's check the equals method
             checkMethodImpl(c, "hashCode", null, "public int hashCode()", result);                    
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/CredentialInterface.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/CredentialInterface.java
index 6d429cd..684f6f7 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/CredentialInterface.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/CredentialInterface.java
@@ -39,9 +39,9 @@
 
 
     private static String[] allowedInterfaces = new String[] {
-                              "javax.resource.spi.security.PasswordCredential",
+                              "jakarta.resource.spi.security.PasswordCredential",
                               "org.ietf.jgss.GSSCredential",
-                              "javax.resource.spi.security.GenericCredential" };
+                              "jakarta.resource.spi.security.GenericCredential" };
 
     /** <p>
      * All Credential interface declared in the DD should be one of the 
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/DefaultConnectionManagerExistence.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/DefaultConnectionManagerExistence.java
index 701137d..ce26fe4 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/DefaultConnectionManagerExistence.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/DefaultConnectionManagerExistence.java
@@ -69,7 +69,7 @@
 	        
         //File jarFile = Verifier.getJarFile(descriptor.getModuleDescriptor().getArchiveUri());
 //        File f=Verifier.getArchiveFile(descriptor.getModuleDescriptor().getArchiveUri());     
-        findImplementorOf(descriptor, "javax.resource.spi.ConnectionManager", result);
+        findImplementorOf(descriptor, "jakarta.resource.spi.ConnectionManager", result);
         return result;
     }
 }
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/DefaultConnectionManagerSerializable.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/DefaultConnectionManagerSerializable.java
index ea27af9..279cbaa 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/DefaultConnectionManagerSerializable.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/DefaultConnectionManagerSerializable.java
@@ -30,7 +30,7 @@
 
 
 /**
- * Test if the default implementation of the javax.resource.spi.ConnectionManager
+ * Test if the default implementation of the jakarta.resource.spi.ConnectionManager
  * provided implements the java.io.Serializable interface
  *
  * @author  Jerome Dochez
@@ -40,7 +40,7 @@
 
 
     /** <p>
-     * Test if the default implementation of the javax.resource.spi.ConnectionManager
+     * Test if the default implementation of the jakarta.resource.spi.ConnectionManager
      * provided implements the java.io.Serializable interface
      * </p>
      *
@@ -67,7 +67,7 @@
         // let's get first the the default implementation of the ConnectionManager
         //File jarFile = Verifier.getJarFile(descriptor.getModuleDescriptor().getArchiveUri());
 //        File f=Verifier.getArchiveFile(descriptor.getModuleDescriptor().getArchiveUri());
-        Class c = findImplementorOf(descriptor, "javax.resource.spi.ConnectionManager");
+        Class c = findImplementorOf(descriptor, "jakarta.resource.spi.ConnectionManager");
         
         if (c!=null) {
             // We found it, let's see if it implements the right interface
@@ -82,7 +82,7 @@
 	result.failed(smh.getLocalString
 		      ("com.sun.enterprise.tools.verifier.tests.connector.DefaultConnectionManagerExistence.failed", 
 		       "Error: There is no default implementation of the [ {0} ] provided",
-		       new Object[] {"javax.resource.spi.ConnectionManager"}));                            
+		       new Object[] {"jakarta.resource.spi.ConnectionManager"}));                            
         return result;
     }
 }
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/TransactionSupportExistence.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/TransactionSupportExistence.java
index 9cce1fd..575fa06 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/TransactionSupportExistence.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/TransactionSupportExistence.java
@@ -91,7 +91,7 @@
 //        File f=Verifier.getArchiveFile(descriptor.getModuleDescriptor().getArchiveUri());
         if (connectorTransactionSupport.equals(ConnectorTagNames.DD_NO_TRANSACTION)) {
             boolean oneFailed=false;
-            if (findImplementorOf(descriptor, "javax.resource.spi.LocalTransaction")!=null) {
+            if (findImplementorOf(descriptor, "jakarta.resource.spi.LocalTransaction")!=null) {
                 oneFailed = true;
 		result.addWarningDetails(smh.getLocalString
 					  ("tests.componentNameConstructor",
@@ -99,7 +99,7 @@
 					   new Object[] {compName.toString()}));
                 result.warning(smh.getLocalString(getClass().getName() + ".warning",
                 "Warning: Transaction support {0} is specified for ressource adapter but [ {1} ] is implemented",
-		new Object[] {"NoTransaction", "javax.resource.spi.LocalTransaction"}));     
+		new Object[] {"NoTransaction", "jakarta.resource.spi.LocalTransaction"}));     
             }
             if (findImplementorOf(descriptor, "javax.transaction.xa.XAResource")!=null) {
                 oneFailed = true;
@@ -118,19 +118,19 @@
 					   new Object[] {compName.toString()}));	
 		result.passed(smh.getLocalString(getClass().getName() + ".passed1",
                     "Transaction support NoTransaction is specified for ressource adapter and [ {0} ] are not implemented",
-                    new Object[] {"javax.transaction.xa.XAResource, javax.resource.spi.LocalTransaction"}));                          
+                    new Object[] {"javax.transaction.xa.XAResource, jakarta.resource.spi.LocalTransaction"}));                          
             }
         }
         else {
             if (connectorTransactionSupport.equals(ConnectorTagNames.DD_LOCAL_TRANSACTION)) {
-                if (findImplementorOf(descriptor, "javax.resource.spi.LocalTransaction")==null) {
+                if (findImplementorOf(descriptor, "jakarta.resource.spi.LocalTransaction")==null) {
                     result.addErrorDetails(smh.getLocalString
 					  ("tests.componentNameConstructor",
 					   "For [ {0} ]",
 					   new Object[] {compName.toString()}));
 		result.failed(smh.getLocalString(getClass().getName() + ".nonexist",
                     "Error: Transaction support {0} is specified for ressource adapter but [ {1} ] is not implemented",
-		    new Object[] {"LocalTransaction", "javax.resource.spi.LocalTransaction"}));     
+		    new Object[] {"LocalTransaction", "jakarta.resource.spi.LocalTransaction"}));     
                 } else {                
                     if (findImplementorOf(descriptor, "javax.transaction.xa.XAResource")!=null) {
 			result.addWarningDetails(smh.getLocalString
@@ -147,13 +147,13 @@
 					   new Object[] {compName.toString()}));
 			result.passed(smh.getLocalString(getClass().getName() + ".passed2",
                             "Transaction support {0} is specified for ressource adapter and [ {1} ] is(are) implemented",
-                		new Object[] {"LocalTransaction", "javax.resource.spi.LocalTransaction"}));                             
+                		new Object[] {"LocalTransaction", "jakarta.resource.spi.LocalTransaction"}));                             
                     }
                 }                            
             } else {
                 if (connectorTransactionSupport.equals(ConnectorTagNames.DD_XA_TRANSACTION)) {
                     boolean oneFailed = false;
-                    if (findImplementorOf(descriptor, "javax.resource.spi.LocalTransaction")==null) {
+                    if (findImplementorOf(descriptor, "jakarta.resource.spi.LocalTransaction")==null) {
                         oneFailed = true;
                         result.addErrorDetails(smh.getLocalString
 					  ("tests.componentNameConstructor",
@@ -161,7 +161,7 @@
 					   new Object[] {compName.toString()}));
 			result.failed(smh.getLocalString(getClass().getName() + ".nonexist",
                         "Error: Transaction support {0} is specified for ressource adapter but [ {1} ] is not implemented",
-		        new Object[] {"XATransaction", "javax.resource.spi.LocalTransaction"}));                         
+		        new Object[] {"XATransaction", "jakarta.resource.spi.LocalTransaction"}));                         
                     }
                     if (findImplementorOf(descriptor, "javax.transaction.xa.XAResource")==null) {
                         oneFailed = true;
@@ -180,7 +180,7 @@
 					   new Object[] {compName.toString()}));
 			result.passed(smh.getLocalString(getClass().getName() + ".passed2",
                             "Transaction support {0} is specified for ressource adapter and [ {1} ] is(are) implemented",
-                            new Object[] {"XATransaction", "javax.transaction.xa.Transaction, javax.resource.spi.LocalTransaction"}));                               
+                            new Object[] {"XATransaction", "javax.transaction.xa.Transaction, jakarta.resource.spi.LocalTransaction"}));                               
                     }
                 } else {
                     // unknow transaction support
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/CCITest.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/CCITest.java
index 0d1b06e..77fb15d 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/CCITest.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/CCITest.java
@@ -63,7 +63,7 @@
     {
       ConnectionDefDescriptor connDefDesc = (ConnectionDefDescriptor)
         iter.next();
-      // check if intf implements javax.resource.cci.ConnectionFactory
+      // check if intf implements jakarta.resource.cci.ConnectionFactory
       String intf = connDefDesc.getConnectionFactoryIntf();
       Class implClass = null;
       try
@@ -82,7 +82,7 @@
              new Object[] {intf}));                
         continue;
       }
-      if(isImplementorOf(implClass, "javax.resource.cci.ConnectionFactory"))
+      if(isImplementorOf(implClass, "jakarta.resource.cci.ConnectionFactory"))
       {
         return true;
       }
@@ -94,7 +94,7 @@
   /**
    * <p>
    * Returns the connection-interface that implements
-   * "javax.resource.cci.Connection"
+   * "jakarta.resource.cci.Connection"
    * </p>
    * @param descriptor the deployment descriptor
    * @param result to put the result
@@ -137,7 +137,7 @@
              new Object[] {intf}));                
         continue;
       }
-      if(isImplementorOf(intfClass, "javax.resource.cci.Connection"))
+      if(isImplementorOf(intfClass, "jakarta.resource.cci.Connection"))
       {
         return intf;
       }
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionFactoryDefaultConstructor.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionFactoryDefaultConstructor.java
index 0cdcafb..49c24f4 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionFactoryDefaultConstructor.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionFactoryDefaultConstructor.java
@@ -32,7 +32,7 @@
 
 /**
  * Test that the implementation class for  
- * javax.resource.cci.ConnectionFactory provides a default constructor 
+ * jakarta.resource.cci.ConnectionFactory provides a default constructor 
  *
  * @author Anisha Malhotra 
  * @version 
@@ -43,7 +43,7 @@
 {
   /** <p>
    * Test that the implementation class for  
-   * javax.resource.cci.ConnectionFactory provides a default constructor 
+   * jakarta.resource.cci.ConnectionFactory provides a default constructor 
    * </p>
    *
    * @param descriptor deployment descriptor for the rar file
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionFactoryInterfaceExistence.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionFactoryInterfaceExistence.java
index 7a4665e..5c504b8 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionFactoryInterfaceExistence.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionFactoryInterfaceExistence.java
@@ -67,7 +67,7 @@
               (getClass().getName() + ".nonexist",
                "Error: The deployment descriptor for the resource adapter do not define a connectionfactory-interface"));        
         }*/        
-        isClassLoadable("javax.resource.cci.ConnectionFactory", result); 
+        isClassLoadable("jakarta.resource.cci.ConnectionFactory", result); 
       }
       else
       {
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionFactoryInterfaceImpl.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionFactoryInterfaceImpl.java
index 4ef1670..9c32b19 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionFactoryInterfaceImpl.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionFactoryInterfaceImpl.java
@@ -60,7 +60,7 @@
            new Object[] {compName.toString()}));
       result.passed(smh.getLocalString
           ("com.sun.enterprise.tools.verifier.tests.connector.cci.ConnectionFactoryInterfaceImpl.pass1",
-           "The class [ {0} ] as defined in the connectionfactory-impl-class deployment descriptor implements javax.resource.cci.ConnectionFactory",
+           "The class [ {0} ] as defined in the connectionfactory-impl-class deployment descriptor implements jakarta.resource.cci.ConnectionFactory",
            new Object[] {c.getName()}));
       }
     }
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionFactoryReferenceable.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionFactoryReferenceable.java
index f36a9a0..b7a8856 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionFactoryReferenceable.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionFactoryReferenceable.java
@@ -27,7 +27,7 @@
 import com.sun.enterprise.tools.verifier.tests.*;
 import com.sun.enterprise.deployment.ConnectorDescriptor;
 /**
- * Test if the connectionfactory-impl-class implements the javax.resource.Referenceable
+ * Test if the connectionfactory-impl-class implements the jakarta.resource.Referenceable
  * interface
  *
  * @author  Jerome Dochez
@@ -37,7 +37,7 @@
 
   /** <p>
    * Test if the connectionfactory-impl-class implements the 
-   * javax.resource.Referenceable interface
+   * jakarta.resource.Referenceable interface
    * </p>
    *
    * @paramm descriptor deployment descriptor for the rar file
@@ -53,7 +53,7 @@
       // failure to load the class are handled in the superclass
       if (c!=null) {
         // now check it does implement the interface 
-        testImplementationOf(c, "javax.resource.Referenceable", result); 
+        testImplementationOf(c, "jakarta.resource.Referenceable", result); 
       }
     }
     else
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionFactoryTest.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionFactoryTest.java
index 8fff14f..155a485 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionFactoryTest.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionFactoryTest.java
@@ -41,14 +41,14 @@
    /**
      * <p>
      * Get the <code>Class</code> object of the class declared as implementing
-     * the javax.resource.cci.ConnectionFactory interface and declared in the 
+     * the jakarta.resource.cci.ConnectionFactory interface and declared in the 
      * archive deployment descriptors under the connection-factory-impl-class
      * </p> 
      *
      * @param descriptor the rar file deployment descriptor
      * @param result instance to use to put the result of the test
      * @return Class object for the connectionfactoryimpl-class that implements
-     * javax.resource.cci.ConnectionFactory
+     * jakarta.resource.cci.ConnectionFactory
     */
   protected Class getConnectionFactoryImpl(ConnectorDescriptor descriptor,
       Result result) 
@@ -83,7 +83,7 @@
              new Object[] {impl}));
         return null;
       }            
-      if(isImplementorOf(implClass, "javax.resource.cci.ConnectionFactory"))
+      if(isImplementorOf(implClass, "jakarta.resource.cci.ConnectionFactory"))
         return implClass;
     }
     return null;
@@ -119,7 +119,7 @@
            new Object[] {compName.toString()}));
       result.failed(smh.getLocalString
           ("com.sun.enterprise.tools.verifier.tests.connector.cci.ConnectionFactoryTest.nonimpl", 
-           "Error: The resource adapter must implement the javax.resource.cci.ConnectionFactory interface and declare it in the connectionfactory-impl-class deployment descriptor."));                           
+           "Error: The resource adapter must implement the jakarta.resource.cci.ConnectionFactory interface and declare it in the connectionfactory-impl-class deployment descriptor."));                           
     }
     return mcf;
   }
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionMetaDataExistence.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionMetaDataExistence.java
index b13dc83..5ca45f6 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionMetaDataExistence.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionMetaDataExistence.java
@@ -30,7 +30,7 @@
 import com.sun.enterprise.deployment.ConnectorDescriptor;
 
 /**
- * Test if a javax.resource.cci.ConnectionMetaData implementation has been provided in
+ * Test if a jakarta.resource.cci.ConnectionMetaData implementation has been provided in
  * the rar file
  *
  * @author  Jerome Dochez
@@ -42,7 +42,7 @@
 {
 
     /** <p>
-     * Test if a javax.resource.cci.ConnectionMetaData implementation has been 
+     * Test if a jakarta.resource.cci.ConnectionMetaData implementation has been 
      * provided in the rar file
      * </p>
      *
@@ -58,7 +58,7 @@
         if (isCCIImplemented(descriptor, result)) {
             //File jarFile = Verifier.getJarFile(descriptor.getModuleDescriptor().getArchiveUri());
 //            File f=Verifier.getArchiveFile(descriptor.getModuleDescriptor().getArchiveUri());
-            findImplementorOf(descriptor, "javax.resource.cci.ConnectionMetaData", result);
+            findImplementorOf(descriptor, "jakarta.resource.cci.ConnectionMetaData", result);
         } else {
 	    result.addNaDetails(smh.getLocalString
 				  ("tests.componentNameConstructor",
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionTest.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionTest.java
index 107bf29..552d23d 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionTest.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ConnectionTest.java
@@ -42,14 +42,14 @@
    /**
      * <p>
      * Get the <code>Class</code> object of the class declared as implementing
-     * the javax.resource.cci.Connection interface and declared in the 
+     * the jakarta.resource.cci.Connection interface and declared in the 
      * archive deployment descriptors under the connection-impl-class
      * </p> 
      *
      * @param descriptor the rar file deployment descriptor
      * @param result instance to use to put the result of the test
      * @return Class object for the connectionimpl-class that implements
-     * javax.resource.cci.Connection
+     * jakarta.resource.cci.Connection
      */
     protected Class getConnectionImpl(ConnectorDescriptor descriptor,
     Result result) 
@@ -84,7 +84,7 @@
                new Object[] {impl}));
           return null;
         }            
-        if(isImplementorOf(implClass, "javax.resource.cci.Connection"))
+        if(isImplementorOf(implClass, "jakarta.resource.cci.Connection"))
           return implClass;
       }
       return null;
@@ -113,7 +113,7 @@
              new Object[] {compName.toString()}));
         result.failed(smh.getLocalString
             ("com.sun.enterprise.tools.verifier.tests.connector.cci.ConnectionTest.nonimpl", 
-             "Error: The resource adapter must implement the javax.resource.cci.Connection interface and declare it in the connection-impl-class deployment descriptor."));                
+             "Error: The resource adapter must implement the jakarta.resource.cci.Connection interface and declare it in the connection-impl-class deployment descriptor."));                
       }
       return mcf;
     }
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/InteractionExistence.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/InteractionExistence.java
index f81d710..7b2026a 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/InteractionExistence.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/InteractionExistence.java
@@ -32,7 +32,7 @@
 
 
 /**
- * Test if a javax.resource.cci.Interfaction implementation has been provided in
+ * Test if a jakarta.resource.cci.Interfaction implementation has been provided in
  * the rar file
  *
  * @author  Jerome Dochez
@@ -44,7 +44,7 @@
 {
 
     /** <p>
-     * Test if a javax.resource.cci.Interfaction implementation has been 
+     * Test if a jakarta.resource.cci.Interfaction implementation has been 
      * provided in the rar file
      * </p>
      *
@@ -59,7 +59,7 @@
         if (isCCIImplemented(descriptor, result)) {
             //File jarFile = Verifier.getJarFile(descriptor.getModuleDescriptor().getArchiveUri());
 //            File f=Verifier.getArchiveFile(descriptor.getModuleDescriptor().getArchiveUri());
-            findImplementorOf(descriptor, "javax.resource.cci.Interaction", result);
+            findImplementorOf(descriptor, "jakarta.resource.cci.Interaction", result);
         } else {
 	    result.addNaDetails(smh.getLocalString
 				  ("tests.componentNameConstructor",
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/InteractionSpecExistence.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/InteractionSpecExistence.java
index 958733d..abe2278 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/InteractionSpecExistence.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/InteractionSpecExistence.java
@@ -30,7 +30,7 @@
 import com.sun.enterprise.deployment.ConnectorDescriptor;
 
 /**
- * Test if a javax.resource.cci.InterfactionSpec implementation has been provided in
+ * Test if a jakarta.resource.cci.InterfactionSpec implementation has been provided in
  * the rar file
  *
  * @author  Jerome Dochez
@@ -42,7 +42,7 @@
 {
 
     /** <p>
-     * Test if a javax.resource.cci.InterfactionSpec implementation has been 
+     * Test if a jakarta.resource.cci.InterfactionSpec implementation has been 
      * provided in the rar file
      * </p>
      *
@@ -58,7 +58,7 @@
         if (isCCIImplemented(descriptor, result)) {
             //File jarFile = Verifier.getJarFile(descriptor.getModuleDescriptor().getArchiveUri());
 //            File f=Verifier.getArchiveFile(descriptor.getModuleDescriptor().getArchiveUri());
-            findImplementorOf(descriptor, "javax.resource.cci.InteractionSpec", result);
+            findImplementorOf(descriptor, "jakarta.resource.cci.InteractionSpec", result);
         } else {
 	    result.addNaDetails(smh.getLocalString
 				  ("tests.componentNameConstructor",
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/InteractionSpecJavaBeansCompliance.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/InteractionSpecJavaBeansCompliance.java
index c6daffb..16b6634 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/InteractionSpecJavaBeansCompliance.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/InteractionSpecJavaBeansCompliance.java
@@ -56,7 +56,7 @@
         if (isCCIImplemented(descriptor, result)) {
             //File jarFile = Verifier.getJarFile(descriptor.getModuleDescriptor().getArchiveUri());
 //            File f=Verifier.getArchiveFile(descriptor.getModuleDescriptor().getArchiveUri());
-            Class mcf = findImplementorOf(descriptor, "javax.resource.cci.InteractionSpec");
+            Class mcf = findImplementorOf(descriptor, "jakarta.resource.cci.InteractionSpec");
             if (mcf != null) {
                 try {
                     BeanInfo bi = Introspector.getBeanInfo(mcf, Object.class);
@@ -73,7 +73,7 @@
 							new Object[] {compName.toString()}));
 				result.failed(smh.getLocalString
 					      (getClass().getName() + ".failed",
-					       "Error: The javax.resource.cci.InteractionSpec implementation [ {0} ] of the property [ {1} ] is not JavaBeans compliant",
+					       "Error: The jakarta.resource.cci.InteractionSpec implementation [ {0} ] of the property [ {1} ] is not JavaBeans compliant",
 					       new Object[] {mcf.getName(), properties[i].getName()} ));                                                                                
 			}
                         if (!properties[i].isConstrained() && !properties[i].isBound()) {
@@ -84,7 +84,7 @@
 						    new Object[] {compName.toString()}));
 			    result.failed(smh.getLocalString
 					  (getClass().getName() + ".failed2",
-					   "Error: The property [ {0} ] of the javax.resource.cci.InteractionSpec implementation [ {1} ] is not bound or constrained",
+					   "Error: The property [ {0} ] of the jakarta.resource.cci.InteractionSpec implementation [ {1} ] is not bound or constrained",
 					   new Object[] {properties[i].getName(), mcf.getName()} ));                                                                                
                         }
                     }
@@ -95,7 +95,7 @@
 					   new Object[] {compName.toString()}));
                     result.notApplicable(smh.getLocalString
     	                (getClass().getName() + ".failed",
-                        "Error: The javax.resource.cci.InteractionSpec implementation [ {0} ] is not JavaBeans compliant",
+                        "Error: The jakarta.resource.cci.InteractionSpec implementation [ {0} ] is not JavaBeans compliant",
                         new Object[] {mcf.getName()} ));                                                
                     return result;
                 }
@@ -107,7 +107,7 @@
 					   new Object[] {compName.toString()}));
                 result.notApplicable(smh.getLocalString
     	            (getClass().getName() + ".nonexist",
-                    "Error: While the CCI interfaces are implemented, the javax.resource.cci.InteractionSpec is not"));         
+                    "Error: While the CCI interfaces are implemented, the jakarta.resource.cci.InteractionSpec is not"));         
                 return result;
             }
                 
@@ -128,7 +128,7 @@
 					   new Object[] {compName.toString()}));	
 		result.passed(smh.getLocalString
                 (getClass().getName() + ".passed",
-                "The javax.resource.cci.InteractionSpec implementation is JavaBeans compliant"));                     
+                "The jakarta.resource.cci.InteractionSpec implementation is JavaBeans compliant"));                     
         }
         return result;
     }
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/InteractionSpecSerializable.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/InteractionSpecSerializable.java
index 543e032..036ba13 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/InteractionSpecSerializable.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/InteractionSpecSerializable.java
@@ -41,7 +41,7 @@
     implements ConnectorCheck 
 {
     /** <p>
-     * Test if the javax.resource.cci.InterfactionSpec implementation provided
+     * Test if the jakarta.resource.cci.InterfactionSpec implementation provided
      * in the rar file also implements the java.io.Serializable interface
      * </p>
      *
@@ -57,7 +57,7 @@
         if (isCCIImplemented(descriptor, result)) {
             //File jarFile = Verifier.getJarFile(descriptor.getModuleDescriptor().getArchiveUri());
 //            File f=Verifier.getArchiveFile(descriptor.getModuleDescriptor().getArchiveUri());
-            Class is = findImplementorOf(descriptor, "javax.resource.cci.InteractionSpec");
+            Class is = findImplementorOf(descriptor, "jakarta.resource.cci.InteractionSpec");
             if (is !=null) {
                 testImplementationOf(is, "java.io.Serializable", result);
                 return result;
@@ -68,7 +68,7 @@
 				   new Object[] {compName.toString()}));
                 result.notApplicable(smh.getLocalString
     	            ("com.sun.enterprise.tools.verifier.tests.connector.cci.InteractionSpecJavaBeansCompliance.nonexist",
-                    "Error: While the CCI interfaces are implemented, the javax.resource.cci.InteractionSpec is not"));         
+                    "Error: While the CCI interfaces are implemented, the jakarta.resource.cci.InteractionSpec is not"));         
                 return result;            
             }
         } else {
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/RecordExistence.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/RecordExistence.java
index 9d0906f..393f559 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/RecordExistence.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/RecordExistence.java
@@ -30,7 +30,7 @@
 import com.sun.enterprise.deployment.ConnectorDescriptor;
 
 /**
- * Test if a javax.resource.cci.Record implementation has been provided in
+ * Test if a jakarta.resource.cci.Record implementation has been provided in
  * the rar file
  *
  * @author  Jerome Dochez
@@ -42,7 +42,7 @@
 {
 
     /** <p>
-     * Test if a javax.resource.cci.Record implementation has been 
+     * Test if a jakarta.resource.cci.Record implementation has been 
      * provided in the rar file
      * </p>
      *
@@ -58,7 +58,7 @@
         if (isCCIImplemented(descriptor, result)) {
             //File jarFile = Verifier.getJarFile(descriptor.getModuleDescriptor().getArchiveUri());
 //            File f=Verifier.getArchiveFile(descriptor.getModuleDescriptor().getArchiveUri());
-            findImplementorOf(descriptor, "javax.resource.cci.Record", result);
+            findImplementorOf(descriptor, "jakarta.resource.cci.Record", result);
         } else {
 	    result.addNaDetails(smh.getLocalString
 				  ("tests.componentNameConstructor",
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/RecordFactoryExistence.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/RecordFactoryExistence.java
index 1627946..8aa8ebe 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/RecordFactoryExistence.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/RecordFactoryExistence.java
@@ -30,7 +30,7 @@
 import com.sun.enterprise.tools.verifier.tests.*;
 
 /**
- * Test if a javax.resource.cci.RecordFactory implementation has been provided in
+ * Test if a jakarta.resource.cci.RecordFactory implementation has been provided in
  * the rar file
  *
  * @author  Jerome Dochez
@@ -40,7 +40,7 @@
 {
 
     /** <p>
-     * Test if a javax.resource.cci.RecordFactory implementation has been 
+     * Test if a jakarta.resource.cci.RecordFactory implementation has been 
      * provided in the rar file
      * </p>
      *
@@ -55,7 +55,7 @@
         if (isCCIImplemented(descriptor, result)) {
             //File jarFile = Verifier.getJarFile(descriptor.getModuleDescriptor().getArchiveUri());
 //            File f=Verifier.getArchiveFile(descriptor.getModuleDescriptor().getArchiveUri());
-            findImplementorOf(descriptor, "javax.resource.cci.RecordFactory", result);
+            findImplementorOf(descriptor, "jakarta.resource.cci.RecordFactory", result);
         } else {
 	     result.addNaDetails(smh.getLocalString
 				       ("tests.componentNameConstructor",
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ResourceAdapterMetaDataExistence.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ResourceAdapterMetaDataExistence.java
index 0d23e71..f029ca6 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ResourceAdapterMetaDataExistence.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/cci/ResourceAdapterMetaDataExistence.java
@@ -30,7 +30,7 @@
 import com.sun.enterprise.tools.verifier.tests.connector.ConnectorTest;
 
 /**
- * Test if a javax.resource.cci.ConnectionMetaData implementation has been provided in
+ * Test if a jakarta.resource.cci.ConnectionMetaData implementation has been provided in
  * the rar file
  *
  * @author  Jerome Dochez
@@ -42,7 +42,7 @@
 {
 
     /** <p>
-     * Test if a javax.resource.cci.ConnectionMetaData implementation has been 
+     * Test if a jakarta.resource.cci.ConnectionMetaData implementation has been 
      * provided in the rar file
      * </p>
      *
@@ -58,7 +58,7 @@
         if (isCCIImplemented(descriptor, result)) {
             //File jarFile = Verifier.getJarFile(descriptor.getModuleDescriptor().getArchiveUri());
 //            File f=Verifier.getArchiveFile(descriptor.getModuleDescriptor().getArchiveUri());
-            findImplementorOf(descriptor, "javax.resource.cci.ResourceAdapterMetaData", result);
+            findImplementorOf(descriptor, "jakarta.resource.cci.ResourceAdapterMetaData", result);
         } else {
 	    result.addNaDetails(smh.getLocalString
 				  ("tests.componentNameConstructor",
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/CheckConnectionFactoryImplReferenceable.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/CheckConnectionFactoryImplReferenceable.java
index 465639c..029d00f 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/CheckConnectionFactoryImplReferenceable.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/CheckConnectionFactoryImplReferenceable.java
@@ -35,7 +35,7 @@
 
 /**
  * Test for each connection-definition, that "connectionfactory-impl-class"
- * implements javax.resource.Referenceable
+ * implements jakarta.resource.Referenceable
  *
  * @author Anisha Malhotra 
  * @version 
@@ -47,7 +47,7 @@
 
   /** <p>
    * Test for each connection-definition, that "connectionfactory-impl-class"
-   * implements javax.resource.Referenceable
+   * implements jakarta.resource.Referenceable
    * </p>
    *
    * @param descriptor deployment descriptor for the rar file
@@ -102,7 +102,7 @@
              new Object[] {connectionImpl}));
         return result;
       }
-      if(!isImplementorOf(implClass, "javax.resource.Referenceable"))
+      if(!isImplementorOf(implClass, "jakarta.resource.Referenceable"))
       {
         oneFailed = true;
         result.addErrorDetails(smh.getLocalString
@@ -110,7 +110,7 @@
              "For [ {0} ]",
              new Object[] {compName.toString()}));
         result.failed(smh.getLocalString(getClass().getName() + ".failed",
-              "Error: connectionfactory-impl-class [ {0} ] does not implement javax.resource.Referenceable",
+              "Error: connectionfactory-impl-class [ {0} ] does not implement jakarta.resource.Referenceable",
               new Object[] {implClass.getName()}));
         return result;                
       }
@@ -122,7 +122,7 @@
            "For [ {0} ]",
            new Object[] {compName.toString()}));	
       result.passed(smh.getLocalString(getClass().getName() + ".passed",
-            "Success: all connectionfactory-impl-class implement javax.resource.Referenceable"));                     
+            "Success: all connectionfactory-impl-class implement jakarta.resource.Referenceable"));                     
     }
     return result;
   }
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionExistence.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionExistence.java
index 92c6844..3db2ac2 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionExistence.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionExistence.java
@@ -31,7 +31,7 @@
 import com.sun.enterprise.tools.verifier.tests.*;
 
 /**
- * Test the implementation of the javax.resource.spi.ManagedConnection 
+ * Test the implementation of the jakarta.resource.spi.ManagedConnection 
  * interface in the rar file
  *
  * @author  Jerome Dochez
@@ -43,7 +43,7 @@
 {
 
     /** <p>
-     * Test the implementation of the javax.resource.spi.ManagedConnection 
+     * Test the implementation of the jakarta.resource.spi.ManagedConnection 
      * interface in the rar file
      * </p>
      *
@@ -70,7 +70,7 @@
         }
 	//File jarFile = Verifier.getJarFile(descriptor.getModuleDescriptor().getArchiveUri());
 //        File f=Verifier.getArchiveFile(descriptor.getModuleDescriptor().getArchiveUri());
-        findImplementorOf(descriptor, "javax.resource.spi.ManagedConnection", result);
+        findImplementorOf(descriptor, "jakarta.resource.spi.ManagedConnection", result);
         return result;
     }
 }
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionFactoryImplementation.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionFactoryImplementation.java
index a3618d0..a77ee8f 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionFactoryImplementation.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionFactoryImplementation.java
@@ -29,7 +29,7 @@
 
 /**
  * verify the declared ManagedConnectionFactory implements the 
- * javax.resource.spi.ManagedConnectionFactory interface
+ * jakarta.resource.spi.ManagedConnectionFactory interface
  *
  * @author  Jerome Dochez
  * @version 
@@ -66,7 +66,7 @@
                "Resource Adapter does not provide outbound communication"));
           return result;
         }
-        testImplementationOf(descriptor, "javax.resource.spi.ManagedConnectionFactory", result);
+        testImplementationOf(descriptor, "jakarta.resource.spi.ManagedConnectionFactory", result);
         return result;
     }
 }
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionFactoryProperties.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionFactoryProperties.java
index 5cc2951..2c8fab0 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionFactoryProperties.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionFactoryProperties.java
@@ -34,7 +34,7 @@
 import com.sun.enterprise.deployment.OutboundResourceAdapter;
 
 /**
- * Test that the class declared implementing the javax.resource.spi.ManagedConnectionFactory
+ * Test that the class declared implementing the jakarta.resource.spi.ManagedConnectionFactory
  * interface implements the properties declared under the config-property
  * xml tag under the followind requirements :
  *      - Provide a getter and setter method ala JavaBeans
@@ -49,7 +49,7 @@
     implements ConnectorCheck 
 {
     /** <p>
-     * Test that the class declared implementing the javax.resource.spi.ManagedConnectionFactory
+     * Test that the class declared implementing the jakarta.resource.spi.ManagedConnectionFactory
      * interface implements the properties declared under the config-property
      * xml tag under the followind requirements :
      *      - Provide a getter and setter method ala JavaBeans
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionFactoryTest.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionFactoryTest.java
index b2c15ea..71e5a75 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionFactoryTest.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionFactoryTest.java
@@ -44,7 +44,7 @@
     /**
      * <p>
      * Get the <code>Class</code> object of the class declared to be implementing
-     * the javax.resource.spi.ManagedConnectionFactory interface in the 
+     * the jakarta.resource.spi.ManagedConnectionFactory interface in the 
      * archive deployment descriptor
      * </p> 
      *
@@ -71,7 +71,7 @@
         managedConnectionFactoryImpl = 
           connDefDesc.getManagedConnectionFactoryImpl();
         Class implClass = Class.forName(managedConnectionFactoryImpl, false, getVerifierContext().getClassLoader());
-        if(isImplementorOf(implClass, "javax.resource.spi.ManagedConnectionFactory"))
+        if(isImplementorOf(implClass, "jakarta.resource.spi.ManagedConnectionFactory"))
         {
           return implClass;
         }
@@ -112,7 +112,7 @@
                new Object[] {compName.toString()}));
           result.failed(smh.getLocalString
               ("com.sun.enterprise.tools.verifier.tests.connector.managed.ManagedConnectionFactoryTest.nonimpl", 
-               "Error: The resource adapter must implement the javax.resource.spi.ManagedConnectionFactory interface and declare it in the managedconnecttionfactory-class deployment descriptor."));                
+               "Error: The resource adapter must implement the jakarta.resource.spi.ManagedConnectionFactory interface and declare it in the managedconnecttionfactory-class deployment descriptor."));                
         }
       } catch(ClassNotFoundException cnfe) {
         cnfe.printStackTrace();
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionGetMetaData.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionGetMetaData.java
index 62006c1..b244ba4 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionGetMetaData.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionGetMetaData.java
@@ -33,7 +33,7 @@
 
 /**
  * Test that the return type of
- * javax.resource.spi.ManagedConnection.getMetaData() implements 
+ * jakarta.resource.spi.ManagedConnection.getMetaData() implements 
  * the ManagedConnectionMetaData interface.
  *
  * @author Anisha Malhotra 
@@ -45,7 +45,7 @@
 {
   /** <p>
    * Test that the return type of
-   * javax.resource.spi.ManagedConnection.getMetaData() implements 
+   * jakarta.resource.spi.ManagedConnection.getMetaData() implements 
    * the ManagedConnectionMetaData interface.
    * </p>
    *
@@ -72,7 +72,7 @@
     }
 	//File jarFile = Verifier.getJarFile(descriptor.getModuleDescriptor().getArchiveUri());
 //        File f=Verifier.getArchiveFile(descriptor.getModuleDescriptor().getArchiveUri());
-        Class c = findImplementorOf(descriptor, "javax.resource.spi.ManagedConnection");
+        Class c = findImplementorOf(descriptor, "jakarta.resource.spi.ManagedConnection");
     if(c == null)
     {
       result.addErrorDetails(smh.getLocalString
@@ -82,7 +82,7 @@
       result.failed(smh.getLocalString
           ("com.sun.enterprise.tools.verifier.tests.connector.ConnectorTest.findImplementor.failed", 
            "Error: There is no implementation of the [ {0} ] provided",
-           new Object[] {"javax.resource.spi.ManagedConnection"}));        
+           new Object[] {"jakarta.resource.spi.ManagedConnection"}));        
       return result;
     }
     // get return type of getMetaData()
@@ -108,7 +108,7 @@
     }
     Class returnType = m.getReturnType();
     if(VerifierTest.isImplementorOf(returnType, 
-          "javax.resource.spi.ManagedConnectionMetaData"))
+          "jakarta.resource.spi.ManagedConnectionMetaData"))
     {
       result.addGoodDetails(smh.getLocalString
           ("tests.componentNameConstructor",
@@ -117,7 +117,7 @@
       result.passed(smh.getLocalString
           ("com.sun.enterprise.tools.verifier.tests.connector.managed.ManagedConnectionGetMetaData.passed", 
            "ManagedConnection.getMetaData() returns an instance of the" + 
-           "javax.resource.spi.ManagedConnectionMetaData interface"));
+           "jakarta.resource.spi.ManagedConnectionMetaData interface"));
     }
     else
     {
@@ -128,7 +128,7 @@
       result.failed(smh.getLocalString
           ("com.sun.enterprise.tools.verifier.tests.connector.managed.ManagedConnectionGetMetaData.failed1", 
            "Error: getMetaData() does not return an instance of the" + 
-           "javax.resource.spi.ManagedConnectionMetaData interface"));
+           "jakarta.resource.spi.ManagedConnectionMetaData interface"));
     }
     return result;
   }
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionMetaDataExistence.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionMetaDataExistence.java
index 88a766f..2088f86 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionMetaDataExistence.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/managed/ManagedConnectionMetaDataExistence.java
@@ -31,7 +31,7 @@
 import com.sun.enterprise.tools.verifier.tests.connector.ConnectorCheck;
 
 /**
- * Test the implementation of the javax.resource.spi.ManagedConnectionMetaData 
+ * Test the implementation of the jakarta.resource.spi.ManagedConnectionMetaData 
  * interface in the rar file
  *
  * @author  Jerome Dochez
@@ -43,7 +43,7 @@
 {
 
     /** <p>
-     * Test the implementation of the javax.resource.spi.ManagedConnection 
+     * Test the implementation of the jakarta.resource.spi.ManagedConnection 
      * interface in the rar file
      * </p>
      *
@@ -70,7 +70,7 @@
         }
         //File jarFile = Verifier.getJarFile(descriptor.getModuleDescriptor().getArchiveUri());
 //        File f=Verifier.getArchiveFile(descriptor.getModuleDescriptor().getArchiveUri());
-        findImplementorOf(descriptor, "javax.resource.spi.ManagedConnectionMetaData", result);
+        findImplementorOf(descriptor, "jakarta.resource.spi.ManagedConnectionMetaData", result);
         return result;
     }
 }
diff --git a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/messageinflow/CheckActivationSpecClass.java b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/messageinflow/CheckActivationSpecClass.java
index 7ffc49b..68d8421 100644
--- a/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/messageinflow/CheckActivationSpecClass.java
+++ b/appserver/verifier/verifier-impl/src/main/java/com/sun/enterprise/tools/verifier/tests/connector/messageinflow/CheckActivationSpecClass.java
@@ -35,7 +35,7 @@
 
 /**
  * Test for each message-listener , that "activationspec-class"
- * implements "javax.resource.spi.ActivationSpec".
+ * implements "jakarta.resource.spi.ActivationSpec".
  *
  * @author Anisha Malhotra 
  * @version 
@@ -47,7 +47,7 @@
 
   /** <p>
    * Test for each message-listener , that "activationspec-class"
-   * implements "javax.resource.spi.ActivationSpec".
+   * implements "jakarta.resource.spi.ActivationSpec".
    * </p>
    *
    * @param descriptor deployment descriptor for the rar file
@@ -95,7 +95,7 @@
              new Object[] {impl}));
         return result;
       }
-      if(!isImplementorOf(implClass, "javax.resource.spi.ActivationSpec"))
+      if(!isImplementorOf(implClass, "jakarta.resource.spi.ActivationSpec"))
       {
         oneFailed = true;
         result.addErrorDetails(smh.getLocalString
@@ -103,7 +103,7 @@
              "For [ {0} ]",
              new Object[] {compName.toString()}));
         result.failed(smh.getLocalString(getClass().getName() + ".failed",
-              "Error: activationspec-class [ {0} ] does not implement javax.resource.spi.ActivationSpec.",
+              "Error: activationspec-class [ {0} ] does not implement jakarta.resource.spi.ActivationSpec.",
               new Object[] {impl}));
         return result;                
       }
@@ -115,7 +115,7 @@
            "For [ {0} ]",
            new Object[] {compName.toString()}));	
       result.passed(smh.getLocalString(getClass().getName() + ".passed",
-            "Success: all activationspec-class implement javax.resource.spi.ActivationSpec"));
+            "Success: all activationspec-class implement jakarta.resource.spi.ActivationSpec"));
     }
     return result;
   }
diff --git a/appserver/verifier/verifier-impl/src/main/resources/com/sun/enterprise/tools/verifier/LocalStrings.properties b/appserver/verifier/verifier-impl/src/main/resources/com/sun/enterprise/tools/verifier/LocalStrings.properties
index 040f73a..613198e 100755
--- a/appserver/verifier/verifier-impl/src/main/resources/com/sun/enterprise/tools/verifier/LocalStrings.properties
+++ b/appserver/verifier/verifier-impl/src/main/resources/com/sun/enterprise/tools/verifier/LocalStrings.properties
@@ -5833,10 +5833,10 @@
 com.sun.enterprise.tools.verifier.tests.connector.managed.ManagedConnectionFactoryTest.nonexist=\
     Error: The class [ {0} ] as defined in the managedconnectionfactory-class deployment descriptor does not exist.
 com.sun.enterprise.tools.verifier.tests.connector.managed.ManagedConnectionFactoryTest.nonimpl=\
-    Error: The resource adapter must implement the javax.resource.spi.ManagedConnectionFactory interface and declare it in the managedconnectionfactory-class deployment descriptor.
+    Error: The resource adapter must implement the jakarta.resource.spi.ManagedConnectionFactory interface and declare it in the managedconnectionfactory-class deployment descriptor.
 
 com.sun.enterprise.tools.verifier.tests.connector.managed.ManagedConnectionFactoryImplementation.assertion=\
-    The class specified by deployment descriptor managedconnectionfactory-class should implement javax.resource.spi.ManagedConnectionFactory.
+    The class specified by deployment descriptor managedconnectionfactory-class should implement jakarta.resource.spi.ManagedConnectionFactory.
 com.sun.enterprise.tools.verifier.tests.connector.managed.ManagedConnectionFactoryImplementation.specMappingInfo_1.5=\
 	  J2EE Connector Architecture Specification Section #17.3.1  
 
@@ -5864,30 +5864,30 @@
     Error: There is no JavaBeans compliant accessor method [ {0} ] implemented in [ {1} ] for the config-property [ {2} ].
 
 com.sun.enterprise.tools.verifier.tests.connector.DefaultConnectionManagerExistence.assertion=\
-    A default implementation of the javax.resource.spi.ConnectionManager interface should be provided.
+    A default implementation of the jakarta.resource.spi.ConnectionManager interface should be provided.
 com.sun.enterprise.tools.verifier.tests.connector.DefaultConnectionManagerExistence.specMappingInfo_1.5=\
 	  J2EE Connector Architecture Specification Section #6.5.2.2 6.10.1  
 
 
 com.sun.enterprise.tools.verifier.tests.connector.DefaultConnectionManagerSerializable.assertion=\
-    The default implementation of the javax.resource.spi.ConnectionManager interface should implement the java.io.Serializable interface.
+    The default implementation of the jakarta.resource.spi.ConnectionManager interface should implement the java.io.Serializable interface.
 com.sun.enterprise.tools.verifier.tests.connector.DefaultConnectionManagerSerializable.specMappingInfo_1.5=\
 	  J2EE Connector Architecture Specification Section #17.5.1.3 6.5.2  
 com.sun.enterprise.tools.verifier.tests.connector.ConnectionRequestInfoImplEquals.assertion=\
-    The implementation of the javax.resource.spi.ConnectionRequestInfo interface should override the "boolean equals(Object)" method.
+    The implementation of the jakarta.resource.spi.ConnectionRequestInfo interface should override the "boolean equals(Object)" method.
 com.sun.enterprise.tools.verifier.tests.connector.ConnectionRequestInfoImplEquals.specMappingInfo_1.5=\
 	  J2EE Connector Architecture Specification Section #6.5.1.2  
 com.sun.enterprise.tools.verifier.tests.connector.ConnectionRequestInfoImplHashcode.assertion=\
-    The implementation of the javax.resource.spi.ConnectionRequestInfo interface should override the "int hashCode()" method.
+    The implementation of the jakarta.resource.spi.ConnectionRequestInfo interface should override the "int hashCode()" method.
 com.sun.enterprise.tools.verifier.tests.connector.ConnectionRequestInfoImplHashcode.specMappingInfo=
 
 com.sun.enterprise.tools.verifier.tests.connector.managed.ManagedConnectionExistence.assertion=\
-    An implementation of the javax.resource.spi.managed.ManagedConnection interface should be provided.
+    An implementation of the jakarta.resource.spi.managed.ManagedConnection interface should be provided.
 com.sun.enterprise.tools.verifier.tests.connector.managed.ManagedConnectionExistence.specMappingInfo_1.5=\
 	  J2EE Connector Architecture Specification Section #6.10.1  
 
 com.sun.enterprise.tools.verifier.tests.connector.managed.ManagedConnectionMetaDataExistence.assertion=\
-    An implementation of the javax.resource.spi.managed.ManagedConnectionMetaData interface should be provided.
+    An implementation of the jakarta.resource.spi.managed.ManagedConnectionMetaData interface should be provided.
 com.sun.enterprise.tools.verifier.tests.connector.managed.ManagedConnectionMetaDataExistence.specMappingInfo_1.5=\
 	  J2EE Connector Architecture Specification Section #6.10.1  
 
@@ -5912,7 +5912,7 @@
     Error: The deployment descriptor for the resource adapter does not define the connectionfactory-interface element.
 
 com.sun.enterprise.tools.verifier.tests.connector.cci.ConnectionFactoryTest.nonimpl=\
-    Error: The resource adapter must implement the javax.resource.cci.ConnectionFactory interface and declare it in the connectionfactory-impl-class deployment descriptor.
+    Error: The resource adapter must implement the jakarta.resource.cci.ConnectionFactory interface and declare it in the connectionfactory-impl-class deployment descriptor.
 com.sun.enterprise.tools.verifier.tests.connector.cci.ConnectionFactoryTest.nonexist=\
     Error: The class [ {0} ] declared in the connectionfactory-impl-class deployment descriptor does not exist.
 
@@ -5929,7 +5929,7 @@
 	  J2EE Connector Architecture Specification Section #6.5.1.1  
 
 com.sun.enterprise.tools.verifier.tests.connector.cci.ConnectionFactoryInterfaceImpl.pass1=\
-The class [ {0} ] defined in the connectionfactory-impl-class deployment descriptor implements the javax.resource.cci.ConnectionFactory interface.
+The class [ {0} ] defined in the connectionfactory-impl-class deployment descriptor implements the jakarta.resource.cci.ConnectionFactory interface.
 
 com.sun.enterprise.tools.verifier.tests.connector.cci.ConnectionFactorySerializable.assertion=\
     The class defined in the connectionfactory-impl-class element implements the java.io.Serializable interface.
@@ -5937,7 +5937,7 @@
 	  J2EE Connector Architecture Specification Section #6.5.1.3 15.5.1.1  
 
 com.sun.enterprise.tools.verifier.tests.connector.cci.ConnectionFactoryReferenceable.assertion=\
-    The class defined by the connectionfactory-impl-class element implements the javax.resource.Referenceable interface.
+    The class defined by the connectionfactory-impl-class element implements the jakarta.resource.Referenceable interface.
 com.sun.enterprise.tools.verifier.tests.connector.cci.ConnectionFactoryReferenceable.specMappingInfo_1.5=\
 	  J2EE Connector Architecture Specification Section #6.5.1.3 15.5.1.1  
 
@@ -5953,7 +5953,7 @@
     Warning: The getConnection method is not defined by [ {0} ].
 
 com.sun.enterprise.tools.verifier.tests.connector.cci.ConnectionTest.nonimpl=\
-    Error: The resource adapter must implement the javax.resource.cci.Connection interface and declare it in the connection-impl-class deployment descriptor.
+    Error: The resource adapter must implement the jakarta.resource.cci.Connection interface and declare it in the connection-impl-class deployment descriptor.
 com.sun.enterprise.tools.verifier.tests.connector.cci.ConnectionTest.nonexist=\
     Error: The class [ {0} ] defined in the connection-impl-class deployment descriptor does not exist.
 
@@ -6030,52 +6030,52 @@
     All defined authorization mechanism credential interfaces are valid.
 
 com.sun.enterprise.tools.verifier.tests.connector.cci.InteractionExistence.assertion=\
-    An implementation of the javax.resource.cci.Interaction interface should be provided if CCI is implemented.
+    An implementation of the jakarta.resource.cci.Interaction interface should be provided if CCI is implemented.
 com.sun.enterprise.tools.verifier.tests.connector.cci.InteractionExistence.specMappingInfo_1.5=\
 	  J2EE Connector Architecture Specification Section #15.4  
 com.sun.enterprise.tools.verifier.tests.connector.cci.InteractionExistence.notapp=\
     Not Applicable: The CCI interfaces do not seem to be implemented by this resource adapter.
 
 com.sun.enterprise.tools.verifier.tests.connector.cci.InteractionSpecExistence.assertion=\
-    An implementation of the javax.resource.cci.InteractionSpec interface should be provided if CCI is implemented.
+    An implementation of the jakarta.resource.cci.InteractionSpec interface should be provided if CCI is implemented.
 com.sun.enterprise.tools.verifier.tests.connector.cci.InteractionSpecExistence.specMappingInfo_1.5=\
 	  J2EE Connector Architecture Specification Section #15.4  
 
 com.sun.enterprise.tools.verifier.tests.connector.cci.InteractionSpecSerializable.assertion=\
-    The implementation of the javax.resource.cci.InteractionSpec interface should implement the java.io.Serializable interface.
+    The implementation of the jakarta.resource.cci.InteractionSpec interface should implement the java.io.Serializable interface.
 com.sun.enterprise.tools.verifier.tests.connector.cci.InteractionSpecSerializable.specMappingInfo_1.5=\
 	  J2EE Connector Architecture Specification Section #15.6.2.4  
 
 com.sun.enterprise.tools.verifier.tests.connector.cci.InteractionSpecJavaBeansCompliance.assertion=\
-    The implementation of the javax.resource.cci.InteractionSpec interface should provide property access compliant to the JavaBeans specification.
+    The implementation of the jakarta.resource.cci.InteractionSpec interface should provide property access compliant to the JavaBeans specification.
 com.sun.enterprise.tools.verifier.tests.connector.cci.InteractionSpecJavaBeansCompliance.specMappingInfo_1.5=\
 	  J2EE Connector Architecture Specification Section #15.6.2.4  
 com.sun.enterprise.tools.verifier.tests.connector.cci.InteractionSpecJavaBeansCompliance.passed=\
-    The javax.resource.cci.InteractionSpec implementation complies with the JavaBeans specification.
+    The jakarta.resource.cci.InteractionSpec implementation complies with the JavaBeans specification.
 com.sun.enterprise.tools.verifier.tests.connector.cci.InteractionSpecJavaBeansCompliance.nonexit=\
-    Error: Athough the CCI interfaces are implemented, the javax.resource.cci.InteractionSpec interface is not.
+    Error: Athough the CCI interfaces are implemented, the jakarta.resource.cci.InteractionSpec interface is not.
 com.sun.enterprise.tools.verifier.tests.connector.cci.InteractionSpecJavaBeansCompliance.failed=\
-    Error: The javax.resource.cci.InteractionSpec implementation [ {0} ] does not comply with the JavaBeans specification.
+    Error: The jakarta.resource.cci.InteractionSpec implementation [ {0} ] does not comply with the JavaBeans specification.
 com.sun.enterprise.tools.verifier.tests.connector.cci.InteractionSpecJavaBeansCompliance.failed2=\
-    Error: The property [ {0} ] of the javax.resource.cci.InteractionSpec implementation [ {1} ] is not bound or constrained.
+    Error: The property [ {0} ] of the jakarta.resource.cci.InteractionSpec implementation [ {1} ] is not bound or constrained.
 
 com.sun.enterprise.tools.verifier.tests.connector.cci.RecordExistence.assertion=\
-    An implementation of the javax.resource.cci.Record interface should be provided if CCI is implemented.
+    An implementation of the jakarta.resource.cci.Record interface should be provided if CCI is implemented.
 com.sun.enterprise.tools.verifier.tests.connector.cci.RecordExistence.specMappingInfo_1.5=\
 	  J2EE Connector Architecture Specification Section #15.4, #15.10  
 
 com.sun.enterprise.tools.verifier.tests.connector.cci.RecordFactoryExistence.assertion=\
-    An implementation of the javax.resource.cci.RecordFactory interface should be provided if CCI is implemented.
+    An implementation of the jakarta.resource.cci.RecordFactory interface should be provided if CCI is implemented.
 com.sun.enterprise.tools.verifier.tests.connector.cci.RecordFactoryExistence.specMappingInfo_1.5=\
 	  J2EE Connector Architecture Specification Section #15.4 15.10  
 
 com.sun.enterprise.tools.verifier.tests.connector.cci.ConnectionMetaDataExistence.assertion=\
-    An implementation of the javax.resource.cci.ConnectionMetaData interface should be provided if CCI is implemented.
+    An implementation of the jakarta.resource.cci.ConnectionMetaData interface should be provided if CCI is implemented.
 com.sun.enterprise.tools.verifier.tests.connector.cci.ConnectionMetaDataExistence.specMappingInfo_1.5=\
 	  J2EE Connector Architecture Specification Section #15.7.1.1  
 
 com.sun.enterprise.tools.verifier.tests.connector.cci.ResourceAdapterMetaDataExistence.assertion=\
-    An implementation of the javax.resource.cci.ResourceAdapterMetaData interface should be provided if CCI is implemented.
+    An implementation of the jakarta.resource.cci.ResourceAdapterMetaData interface should be provided if CCI is implemented.
 com.sun.enterprise.tools.verifier.tests.connector.cci.ResourceAdapterMetaDataExistence.specMappingInfo_1.5=\
 	  J2EE Connector Architecture Specification Section #17.7.2  
 
@@ -6265,17 +6265,17 @@
 com.sun.enterprise.tools.verifier.tests.connector.managed.notApplicableForInboundRA=\
     Resource adapter does not provide outbound communication.
 com.sun.enterprise.tools.verifier.tests.connector.managed.ManagedConnectionGetMetaData.assertion=\
-    The return type of javax.resource.spi.ManagedConnection.getMetaData() implements the ManagedConnectionMetaData interface.
+    The return type of jakarta.resource.spi.ManagedConnection.getMetaData() implements the ManagedConnectionMetaData interface.
 com.sun.enterprise.tools.verifier.tests.connector.managed.ManagedConnectionGetMetaData.specMappingInfo_1.5=\
 	  J2EE Connector Architecture Specification Section #6.5.5.2  
 com.sun.enterprise.tools.verifier.tests.connector.managed.ManagedConnectionGetMetaData.failed=\
   Error: There is no implementation of getMetaData() provided.
 com.sun.enterprise.tools.verifier.tests.connector.managed.ManagedConnectionGetMetaData.failed1=\
-  Error: getMetaData() does not return an instance of the javax.resource.spi.ManagedConnectionMetaData interface.
+  Error: getMetaData() does not return an instance of the jakarta.resource.spi.ManagedConnectionMetaData interface.
 com.sun.enterprise.tools.verifier.tests.connector.managed.ManagedConnectionGetMetaData.passed=\
-  ManagedConnection.getMetaData() returns an instance of the javax.resource.spi.ManagedConnectionMetaData interface.
+  ManagedConnection.getMetaData() returns an instance of the jakarta.resource.spi.ManagedConnectionMetaData interface.
 com.sun.enterprise.tools.verifier.tests.connector.cci.ConnectionFactoryDefaultConstructor.assertion=\
-  The implementation class for javax.resource.cci.ConnectionFactory provides a default constructor.
+  The implementation class for jakarta.resource.cci.ConnectionFactory provides a default constructor.
 com.sun.enterprise.tools.verifier.tests.connector.cci.ConnectionFactoryDefaultConstructor.specMappingInfo_1.5=\
 	  J2EE Connector Architecture Specification Section #15.5.1.1  
 com.sun.enterprise.tools.verifier.tests.connector.cci.ConnectionFactoryDefaultConstructor.noDefConstr=\
@@ -6313,13 +6313,13 @@
 com.sun.enterprise.tools.verifier.tests.connector.managed.CheckConnectionFactoryImplSerializable.passed=\
   All connectionfactory-impl-class classes implement java.io.Serializable.
 com.sun.enterprise.tools.verifier.tests.connector.managed.CheckConnectionFactoryImplReferenceable.assertion=\
-  For each connection-definition, the specified connectionfactory-impl-class implements javax.resource.Refereneceable.
+  For each connection-definition, the specified connectionfactory-impl-class implements jakarta.resource.Refereneceable.
 com.sun.enterprise.tools.verifier.tests.connector.managed.CheckConnectionFactoryImplReferenceable.specMappingInfo_1.5=\
 	  J2EE Connector Architecture Specification Section #15.5.1.1  
 com.sun.enterprise.tools.verifier.tests.connector.managed.CheckConnectionFactoryImplReferenceable.failed=\
-  Error: connectionfactory-class [ {0} ] does not implement javax.resource.Referenceable.
+  Error: connectionfactory-class [ {0} ] does not implement jakarta.resource.Referenceable.
 com.sun.enterprise.tools.verifier.tests.connector.managed.CheckConnectionFactoryImplReferenceable.passed=\
-  All connectionfactory-impl-class classes implement javax.resource.Referenceable.
+  All connectionfactory-impl-class classes implement jakarta.resource.Referenceable.
 com.sun.enterprise.tools.verifier.tests.connector.admin.notApp=\
   Resource adapter does not define any administered objects.
 com.sun.enterprise.tools.verifier.tests.connector.admin.CheckAdminObjectImpl.assertion=\
@@ -6354,13 +6354,13 @@
 com.sun.enterprise.tools.verifier.tests.connector.messageinflow.nonexist=\
   Error: The class [ {0} ] as defined under activationspec-class in the deployment descriptor does not exist.
 com.sun.enterprise.tools.verifier.tests.connector.messageinflow.CheckActivationSpecClass.assertion=\
-  For each message-listener, the specified activationspec-class implements the javax.resource.spi.ActivationSpec interface.
+  For each message-listener, the specified activationspec-class implements the jakarta.resource.spi.ActivationSpec interface.
 com.sun.enterprise.tools.verifier.tests.connector.messageinflow.CheckActivationSpecClass.specMappingInfo_1.5=\
 	  J2EE Connector Architecture Specification Section #5.3.3, #17.3.1, #17.6  
 com.sun.enterprise.tools.verifier.tests.connector.messageinflow.CheckActivationSpecClass.failed=\
-  Error: activationspec-class [ {0} ] does not implement javax.resource.spi.ActivationSpec.
+  Error: activationspec-class [ {0} ] does not implement jakarta.resource.spi.ActivationSpec.
 com.sun.enterprise.tools.verifier.tests.connector.messageinflow.CheckActivationSpecClass.passed=\
-  All activationspec-class classes implement javax.resource.spi.ActivationSpec.
+  All activationspec-class classes implement jakarta.resource.spi.ActivationSpec.
 com.sun.enterprise.tools.verifier.tests.connector.messageinflow.CheckActivationSpecJavaBean.assertion=\
   For each message-listener, the specified activationspec-class is a JavaBeans component.
 com.sun.enterprise.tools.verifier.tests.connector.messageinflow.CheckActivationSpecJavaBean.specMappingInfo_1.5=\
@@ -6385,15 +6385,15 @@
   The resourceadapter-class is not specified.
 
 com.sun.enterprise.tools.verifier.tests.connector.CheckResourceAdapterClass.assertion=\
-  The specified resourceadapter-class implements the javax.resource.spi.ResourceAdapter interface.
+  The specified resourceadapter-class implements the jakarta.resource.spi.ResourceAdapter interface.
 com.sun.enterprise.tools.verifier.tests.connector.CheckResourceAdapterClass.specMappingInfo_1.5=\
 	  J2EE Connector Architecture Specification Section #17.3.1  
 com.sun.enterprise.tools.verifier.tests.connector.CheckResourceAdapterClass.failed1=\
   The resourceadapter-class cannot be empty if the resource adapter provides inbound communication.
 com.sun.enterprise.tools.verifier.tests.connector.CheckResourceAdapterClass.passed=\
-  The resourceadapter-class implements javax.resource.spi.ResourceAdapter.
+  The resourceadapter-class implements jakarta.resource.spi.ResourceAdapter.
 com.sun.enterprise.tools.verifier.tests.connector.CheckResourceAdapterClass.failed=\
-  Error: resourceadapter-class [ {0} ] does not implement javax.resource.spi.ResourceAdapter.
+  Error: resourceadapter-class [ {0} ] does not implement jakarta.resource.spi.ResourceAdapter.
 com.sun.enterprise.tools.verifier.tests.connector.CheckResourceAdapterClassSerializable.assertion=\
   ResourceAdapter class must be available if the resource adapter provides inbound communication
 com.sun.enterprise.tools.verifier.tests.connector.CheckResourceAdapterClassSerializable.specMappingInfo_1.5=\
