public static void configureJarScanner(final Context standardContext) { try { // override only if default final JarScanner originalJarScanner = standardContext.getJarScanner(); if ("true".equalsIgnoreCase(SystemInstance.get().getProperty("tomee.tomcat.override.jar-scanner", "true")) && !TomEEJarScanner.class.isInstance(originalJarScanner) && StandardJarScanner.class.isInstance(originalJarScanner)) { final TomEEJarScanner jarScanner = new TomEEJarScanner(); final Properties properties = SystemInstance.get().getProperties(); final String scanClasspath = properties.getProperty(TomEEJarScanner.class.getName() + ".scanClassPath"); if (scanClasspath != null) { jarScanner.setScanClassPath(Boolean.parseBoolean(scanClasspath)); } final String scanBootstrap = properties.getProperty(TomEEJarScanner.class.getName() + ".scanBootstrapClassPath"); if (scanBootstrap != null) { jarScanner.setScanBootstrapClassPath(Boolean.parseBoolean(scanBootstrap)); } final JarScanFilter jarScanFilter = originalJarScanner.getJarScanFilter(); if (jarScanFilter != null && Boolean.parseBoolean(properties.getProperty(TomEEJarScanner.class.getName() + ".useOriginalJarScannerFilter", "true"))) { jarScanner.setJarScanFilter(jarScanFilter); } standardContext.setJarScanner(jarScanner); } } catch (final Exception e) { // ignore } }
/** * Configure how to scan the jars in the tomcat classpath. * * @param context the server context * @throws IOException an IO Exception * @throws ServletException a servlet exception */ protected void configJarScanner(final Context context) throws IOException, ServletException { if (Didums.hasService(CustomJarScanner.class)) { context.setJarScanner(Didums.getService(CustomJarScanner.class)); } else { // Scan for Annotations on Standard Scanner JarScanner scanner = context.getJarScanner(); if (scanner instanceof StandardJarScanner) { StandardJarScanner std = (StandardJarScanner) scanner; std.setScanManifest(false); std.setScanAllFiles(true); } } }
private void initServer() { if (tomcat == null) { tomcat = new Tomcat(); } WebConf webConf = ConfigFactory.load(WebConf.class); File baseDir = new File(ConfigFactory.load(CoreConf.class).getBaseTempDir(), Tomcat.class.getSimpleName()); File docBase = new File(baseDir, Context.class.getSimpleName()); checkDir(baseDir, docBase); tomcat.setBaseDir(baseDir.getAbsolutePath()); Host host = tomcat.getHost(); host.setAutoDeploy(false); Context ctx = tomcat.addWebapp(host, webConf.getContextPath(), docBase.getAbsolutePath(), new FatJarContextConfig()); ctx.setJarScanner(new FatJarScanner()); ctx.setParentClassLoader(getClass().getClassLoader()); ctx.addLifecycleListener(new FatJarWebXmlListener()); tomcat.setPort(webConf.getPort()); TomcatConf tomcatConf = ConfigFactory.load(TomcatConf.class); configConnector(tomcat.getConnector(), tomcatConf); configEngine(tomcat.getEngine(), tomcatConf); }
StandardJarScanner scanner = new StandardJarScanner(); scanner.setScanBootstrapClassPath(true); ctx.setJarScanner(scanner);
StandardJarScanner scanner = new StandardJarScanner(); scanner.setScanBootstrapClassPath(true); ctx.setJarScanner(scanner);
public static void main(String[] args) throws ServletException, LifecycleException, IOException { String hostName = "localhost"; int port = 8080; String contextPath = ""; String tomcatBaseDir = TomcatUtil.createTempDir("tomcat", port).getAbsolutePath(); String contextDocBase = TomcatUtil.createTempDir("tomcat-docBase", port).getAbsolutePath(); Tomcat tomcat = new Tomcat(); tomcat.setBaseDir(tomcatBaseDir); tomcat.setPort(port); tomcat.setHostname(hostName); Host host = tomcat.getHost(); Context context = tomcat.addWebapp(host, contextPath, contextDocBase, new EmbededContextConfig()); context.setJarScanner(new EmbededStandardJarScanner()); ClassLoader classLoader = Main.class.getClassLoader(); context.setParentClassLoader(classLoader); // context load WEB-INF/web.xml from classpath context.addLifecycleListener(new WebXmlMountListener()); tomcat.start(); tomcat.getServer().await(); } }
context.setJarScanner(jarScanner);