/** * Look for jars in WEB-INF/lib * * @param context * @return the list of jar resources found within context * @throws Exception */ protected List<Resource> findJars(WebAppContext context) throws Exception { List<Resource> jarResources = new ArrayList<Resource>(); Resource web_inf = context.getWebInf(); if (web_inf == null || !web_inf.exists()) return null; Resource web_inf_lib = web_inf.addPath("/lib"); if (web_inf_lib.exists() && web_inf_lib.isDirectory()) { String[] files = web_inf_lib.list(); for (int f = 0; files != null && f < files.length; f++) { try { Resource file = web_inf_lib.addPath(files[f]); String fnlc = file.getName().toLowerCase(Locale.ENGLISH); int dot = fnlc.lastIndexOf('.'); String extension = (dot < 0 ? null : fnlc.substring(dot)); if (extension != null && (extension.equals(".jar") || extension.equals(".zip"))) { jarResources.add(file); } } catch (Exception ex) { LOG.warn(Log.EXCEPTION, ex); } } } return jarResources; }
public File findWorkDirectory(WebAppContext context) throws IOException { if (context.getBaseResource() != null) { Resource web_inf = context.getWebInf(); if (web_inf != null && web_inf.exists()) { return new File(web_inf.getFile(), "work"); } } return null; }
@Override public void configure(WebAppContext context) throws Exception { // cannot configure if the context is already started if (context.isStarted()) { if (LOG.isDebugEnabled()) LOG.debug("Cannot configure webapp " + context + " after it is started"); return; } Resource web_inf = context.getWebInf(); // Add WEB-INF classes and lib classpaths if (web_inf != null && web_inf.isDirectory() && context.getClassLoader() instanceof WebAppClassLoader) { // Look for classes directory Resource classes = web_inf.addPath("classes/"); if (classes.exists()) ((WebAppClassLoader) context.getClassLoader()).addClassPath(classes); // Look for jars Resource lib = web_inf.addPath("lib/"); if (lib.exists() || lib.isDirectory()) ((WebAppClassLoader) context.getClassLoader()).addJars(lib); } // Look for extra resource @SuppressWarnings("unchecked") List<Resource> resources = (List<Resource>) context.getAttribute(RESOURCE_URLS); if (resources != null) { Resource[] collection = new Resource[resources.size() + 1]; int i = 0; collection[i++] = context.getBaseResource(); for (Resource resource : resources) collection[i++] = resource; context.setBaseResource(new ResourceCollection(collection)); } }