最近,我们将项目转换为更具模块化的项目。

我们将硒与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>

07-24 09:53
查看更多