Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Selenium Wire日志为空_Java_Selenium_Tomcat_Logging_Classloader - Fatal编程技术网

Java Selenium Wire日志为空

Java Selenium Wire日志为空,java,selenium,tomcat,logging,classloader,Java,Selenium,Tomcat,Logging,Classloader,我们最近将我们的项目改为更模块化 我们将selenium与jbrowserdriver结合使用,从页面中提取数据 我们正在使用Tomcat的Spring Boot 以前,我们有一个war文件,我们将其部署到tomcat,并打包了所有类文件。在会话期间,我们使用带有wire日志的jbrowserdriver来捕获头文件,效果很好 然而,我们现在已经分离出了一些功能,看起来我们在tomcat中遇到了一系列不同的类加载器问题 我们的系统布局如下: /companyDir + -- /libs | +

我们最近将我们的项目改为更模块化

我们将selenium与jbrowserdriver结合使用,从页面中提取数据

我们正在使用Tomcat的Spring Boot

以前,我们有一个war文件,我们将其部署到tomcat,并打包了所有类文件。在会话期间,我们使用带有wire日志的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时,wire日志完全为空。我们可以在catalina.out中看到wire日志,但是调用
driver.manage().logs().get(“wire”)
显示为空。我不确定如何准确地配置它,以便我们的webdriver中的内部日志充满我们显然要返回的wire日志


我可能对类加载器的问题不太清楚,因为这似乎就是问题所在。

因此,通过使用上下文资源,我们能够重新捕获日志

在正在部署的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>


如此深入的挖掘表明,org.apache.http仍在生成wire日志,但当
LogsServer.java
执行
updateSettings()
以重定向/重新路由
org.apache.commons.logging.Log
com.machinepublishers.jbrowserdriver.WireLog
,当所有的类都从同一个类加载器执行时,这就不起作用了。由于jbrowserdriver使用RMI执行,我甚至在理解它是如何正常工作的方面有点困难,尽管这似乎仍然是与类加载器相关的问题。其他信息:我修改了结构,因此没有使用tomcat的shared.loader属性,我现在使用应用程序上下文来指定要包括映射到/WEB-INF/lib的JAR。同样的结果。我认为这排除了类加载器的问题,并指出它只从外部jar运行。