我们最近将项目转变为更加模块化。
我们正在使用selenium和jbrowserdriver来从页面中抓取数据。
我们正在使用Spring Boot和Tomcat。
以前,我们有一个war文件,我们部署到tomcat,并打包了所有的类文件。我们使用带有线路日志的jbrowserdriver来在会话期间捕获标题并且它运行良好。
但是,我们现在已经分离出了一些功能,看起来我们正在运行tomcat中不同的类加载器问题。
我们的系统布局如下:
/companyDir
+ -- /libs
| + -- core.jar
| + -- /widgets
| | + -- widgetA.jar
| | + -- widgetB.jar
Tomcat配置为在其shared.loader属性中包含/libs/*.jar和/libs/widgets/*.jar。这些jar文件包含在tomcat start中。
然后我们部署一个文件project.war,它有Spring依赖项和控制器端点。
但是,现在当我们调用端点并且端点执行widgetA.jar时,有线日志完全为空。我们看到有线日志显示在catalina.out中,但是调用driver.manage().logs().get("wire")
显示为空。我不确定如何配置这个,以便我们的webdriver中的内部日志充满了我们显然正在回来的有线日志。
我可能只是在类加载器问题上模糊,因为这似乎是问题所在。
答案 0 :(得分:0)
因此,通过使用Context Resources,我们能够重新捕获日志。
在正在部署的project.war的/src/main/webapp/META-INF/context.xml中,我们可以指定“JarResources”资源并使jar可用于同一个类加载器。田田,问题解决了。
这是context.xml的布局:
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/ourApp" docBase="/ourApp">
<Resources>
<PreResources className="org.apache.catalina.webresources.DirResourceSet"
base="/path/to/our/configFiles/"
webAppMount="/WEB-INF/classes" />
<JarResources className="org.apache.catalina.webresources.DirResourceSet"
base="/path/to/our/jars/libs"
webAppMount="/WEB-INF/lib" />
<JarResources className="org.apache.catalina.webresources.DirResourceSet"
base="/path/to/our/jars/libs/widgets"
webAppMount="/WEB-INF/lib" />
</Resources>
</Context>