code: synchronized private JaspiConfig readConfigFile(final File configFile) throws PrivilegedActionException {
          if (tc.isEntryEnabled())
              Tr.entry(tc, "readConfigFile", new Object[] { configFile });
          if (configFile == null) {
              // TODO handle persistence
              // String msg = MessageFormatHelper.getFormattedMessage(msgBundle, AdminConstants.MSG_JASPI_PERSISTENT_FILE, new Object[] { PersistenceManager.JASPI_CONFIG });
              // throw new RuntimeException(msg);
          }
          PrivilegedExceptionAction<JaspiConfig> unmarshalFile = new PrivilegedExceptionAction<JaspiConfig>() {
  
              @Override
              public JaspiConfig run() throws Exception {
                  JaspiConfig cfg = null;
                  JAXBContext jc = JAXBContext.newInstance(JaspiConfig.class);
                  Object obj = jc.createUnmarshaller().unmarshal(configFile);
                  if (obj instanceof JaspiConfig) {
                      cfg = (JaspiConfig) obj;
                  }
                  return cfg;
              }
  
          };
          JaspiConfig jaspi = AccessController.doPrivileged(unmarshalFile);
          if (tc.isEntryEnabled())
              Tr.exit(tc, "readConfigFile", jaspi);
          return jaspi;
      }
docs: Return a Java representation of the JASPI persistent providers that are defined in the given configuration file or null
  if the object returned by JAXB is not an JaspiConfig instance or an exception is thrown by method AccessController.doPrivileged.
  
  @param configFile
  @return
  @throws PrivilegedActionException