最近,我们将项目转换为更具模块化的项目。
我们将硒与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启动时。
然后,我们部署一个文件project.war,它具有Spring依赖项和控制器端点。
但是,现在,当我们调用端点并且端点执行widgetA.jar时,连线日志完全为空。我们看到线路日志显示在catalina.out中,但呼叫
driver.manage().logs().get("wire")
显示为空。我不确定确切如何配置它,以便我们的Webdriver中的内部日志充满我们显然会返回的连线日志。我可能只是在类加载器问题上很模糊,因为这似乎是问题所在。
最佳答案
因此,通过使用上下文资源,我们能够重新捕获日志。
在正在部署的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>