예제 #1
0
  protected void configureLoaderProperties(
      WebappClassLoader cloader, WebXmlParser webXmlParser, File base) {

    cloader.setUseMyFaces(webXmlParser.isUseBundledJSF());

    File libDir = new File(base, "WEB-INF/lib");
    if (libDir.exists()) {
      int baseFileLen = base.getPath().length();
      final boolean ignoreHiddenJarFiles = webXmlParser.isIgnoreHiddenJarFiles();

      for (File file :
          libDir.listFiles(
              new FileFilter() {
                @Override
                public boolean accept(File pathname) {
                  String fileName = pathname.getName();
                  return ((fileName.endsWith(".jar") || fileName.endsWith(".zip"))
                      && (!ignoreHiddenJarFiles || !fileName.startsWith(".")));
                }
              })) {
        try {
          if (file.isDirectory()) {
            // support exploded jar file
            cloader.addRepository("WEB-INF/lib/" + file.getName() + "/", file);
          } else {
            cloader.addJar(file.getPath().substring(baseFileLen), new JarFile(file), file);
            cloader.closeJARs(true);
          }
        } catch (Exception e) {
          // Catch and ignore any exception in case the JAR file
          // is empty.
        }
      }
    }
  }
예제 #2
0
 /**
  * Returns the classpath URIs for this archive.
  *
  * @param archive file
  * @return classpath URIs for this archive
  */
 @Override
 public List<URI> getClassPathURIs(ReadableArchive archive) {
   List<URI> uris = super.getClassPathURIs(archive);
   try {
     File archiveFile = new File(archive.getURI());
     if (archiveFile.exists() && archiveFile.isDirectory()) {
       uris.add(new URI(archive.getURI().toString() + "WEB-INF/classes/"));
       File webInf = new File(archiveFile, "WEB-INF");
       File webInfLib = new File(webInf, "lib");
       if (webInfLib.exists()) {
         uris.addAll(ASClassLoaderUtil.getLibDirectoryJarURIs(webInfLib));
       }
     }
   } catch (Exception e) {
     logger.log(Level.WARNING, e.getMessage(), e);
   }
   return uris;
 }