分两个步骤解决此问题的解决方案。首先,我不得不使用子方法来设置正确的上下文,这是在这个问题中发现的。在嵌入式Tomcat中设置正确的上下文
如想象的那样,我唯一要做的更改就是对getTomcatEmbeddedServletContainer方法的更改。我已经编辑了原始文件,使其看起来像这样:
@Override
protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(Tomcat tomcat) {
tomcat.enableNaming();
TomcatEmbeddedServletContainer container =
super.getTomcatEmbeddedServletContainer(tomcat);
for (Container child: container.getTomcat().getHost().findChildren()) {
if (child instanceof Context) {
ClassLoader contextClassLoader =((Context)child).getLoader().getClassLoader();
Thread.currentThread().setContextClassLoader(contextClassLoader);
break;
}
}
return container;
}
接下来,我必须编辑gradle构建文件,以包括dbcp BasicDataSource依赖关系。我的gradle构建文件现在包含:
dependencies {
// Embedded tomcat dependencies
compile "org.apache.tomcat:tomcat-dbcp:9.0.0.M1"
}