code: void processPersistenceUnit(JPAPXml pxml, JPAApplInfo applInfo) {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "processPersistenceUnit" + pxml);
  
          synchronized (pxmlsInfo) {
              URL pxmlRootURL = pxml.getRootURL();
              String pxmlInfoKey = scope == JPAPuScope.EAR_Scope ? pxml.getArchiveName() : pxmlRootURL.toString();
              JPAPxmlInfo pxmlInfo = pxmlsInfo.get(pxmlInfoKey);
  
              // if root URL is defined for this persistence.xml, it has been processed before,
              // i.e. deployed web module processing will find persistence.xml in the ejb module
              // since the ejb module is in the web module classpath.
              if (pxmlInfo == null) {
                  pxmlInfo = new JPAPxmlInfo(this, pxmlRootURL); // F743-23167
                  pxmlsInfo.put(pxmlInfoKey, pxmlInfo);
  
                  JPAIntrospection.beginPXmlInfoVisit(pxmlInfo);
                  try {
                      // read in all the persistence unit define in this persistence.xml
                      pxmlInfo.extractPersistenceUnits(pxml); //PK62950
                  } finally {
                      JPAIntrospection.endPXmlInfoVisit();
                  }
              }
  
          }
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.exit(tc, "processPersistenceUnit", getPUList());
      }
docs: Process each persistence.xml found in an application. Discover all the persistence unit(s)
  defined in the module.
  
  @param pxml
  @param looseConfig