我正在flume源代码中嵌入tomcat7.0.32。我遇到的问题是flume在类路径上放置了大量内容,在启动时,tomcat会扫描类路径以查找tld,这会导致问题,因为flume使用了通配符。
信息:正在启动servlet引擎:apache tomcat/7.0.32 2012年11月5日上午8:21:08 org.apache.catalina.startup.tldconfig tldscanjar警告:未能处理jar[jar:file:/opt/mapr/hadoop/hadoop-0.20.2/hadoop核心.jar!/]对于tld文件java.io.filenotfoundexception:/opt/mapr/hadoop/hadoop-0.20.2/hadoopcore.jar(没有这样的文件或目录),位于java.util.zip.zipfile.open(本机方法),位于java.util.zip.zipfile.(zipfile)。java:214)在java.util.zip.zipfile。java:144)在java.util.jar.jarfile中。java:152)在java.util.jar.jarfile中。java:89)在太阳网。www.protocol.jar.urljarfile.(URLjar文件。java:93)在sun.net。www.protocol.jar.urljarfile.getjarfile(URLjar文件。java:69)在sun.net。www.protocol.jar.jarfilefactory.get(1)工厂。java:88)在sun.net。www.protocol.jar.jarurlconnection.connect(1)连接。java:122)在太阳网。www.protocol.jar.jarurlconnection.getjarfile(1)连接。java:89)在org.apache.tomcat.util.scan.fileurljar。java:41)位于org.apache.tomcat.util.scan.jarfactory.newinstance(jarfactory。java:34)在org.apache.catalina.startup.tldconfig.tldscanjar(tldconfig。java:487)在org.apache.catalina.startup.tldconfig.access$100(tldconfig。java:58)在org.apache.catalina.startup.tldconfig$tldjarscannercallback.scan(tldconfig。java:303)在org.apache.tomcat.util.scan.standardjarscanner.process(standardjarscanner。java:241)在org.apache.tomcat.util.scan.standardjarscanner.scan(standardjarscanner。java:204)在org.apache.catalina.startup.tldconfig.execute(tldconfig。java:277)
在我的代码中,我曾尝试禁用此扫描,甚至尝试在上下文中将jarscanner设置为null。但这并没有帮助。下面是我的代码:
File docBase = new File(System.getProperty("java.io.tmpdir"));
System.out.println("------- " + docBase.getAbsolutePath());
String servletName = "1 source";
Tomcat tomcat = new Tomcat();
tomcat.setPort(8080);
tomcat.setBaseDir(docBase.getAbsolutePath());
Context context = tomcat.addContext("", docBase.getAbsolutePath());
context.setIgnoreAnnotations(true);
context.setJarScanner(null);
Tomcat.addServlet(context, servletName, new HttpServlet() {
3条答案
按热度按时间bq9c1y661#
试试这个!context=tomcat.addwebapp(“/d”,“d:/”);jarscanner jarscanner=新建jarscanner(){
rjee0c152#
您可以在tomcat.addwebapp()之前禁用扫描类路径和清单:
fcipmucu3#
其他两个答案不适用于tomcat8.5+。addwebapp将contextconfig作为字符串。但您可以使用下面的代码来进行选择性扫描。请注意,如果jarscanner是在context.xml中定义的,那么它将优先于代码。一旦您调用tomcat.start()