我正在使用 Arquillian 为我的一个项目执行集成测试,并发现当应用程序部署到 WebLogic 12c R2 容器时,Arquillian Graphene/Drone 使用了错误的端口号来执行浏览器测试。测试启动浏览器时,使用分配给 WebLogic 管理服务器的端口,而不是分配给 WebLogic 托管服务器的端口,这意味着容器返回 HTTP 404 错误,导致测试用例失败。
我已经研究了各种 Arquillian 组件的代码,并且我相信我已经找到了问题的根本原因。问题似乎出在“wls-common”模块的RESTUtilsdeploy(CommonWebLogicConfiguration config, Logger logger, Archive<?> archive)
类中,该模块包含负责将存档部署到 WebLogic 托管服务器并将其ProtocolMetaData
返回给 Arquillian 的方法。Arquillian Graphene/Drone随后ProtocolMetaData
使用它来访问网页。
在此方法中是
HTTPContext httpContext = new HTTPContext(adminUrl.getHost(), adminUrl.getPort());
用于构建ProtocolMetaData
对象的以下代码行。这意味着正在使用管理端口,而不是分配给托管服务器的端口。
假设我已经正确确定了根本原因,我不相信这个 Arquillian 容器适配器可以与 WebLogic 12c R2 一起使用,这让我觉得我可能试图错误地使用这个适配器。
我的 POM 文件中 WebLogic 容器适配器的 Maven 依赖项如下:
<dependency>
<groupId>org.jboss.arquillian.container</groupId>
<artifactId>arquillian-wls-remote-rest</artifactId>
<version>1.0.0.Final</version>
</dependency>
我的 arquillian.xml 文件中的条目如下:
<container qualifier="arquillian-weblogic-rest">
<configuration>
<property name="adminUrl">http://xxxx:7001</property>
<property name="adminUserName">weblogic</property>
<property name="adminPassword">xxxx</property>
<property name="target">wls_server_1</property>
</configuration>
<protocol type="Servlet 3.0">
<property name="host">xxxx</property>
<property name="port">8080</property>
</protocol>
</container>
我使用的 WebLogic 版本是 12.2.1
我的问题是我在尝试使用此容器适配器部署到 WebLogic 12c R2 容器时是否遗漏了什么?有其他人成功使用此适配器吗?
由于 WebLogic 容器在单独的主机上运行,我相信我需要使用 REST 适配器而不是远程适配器,因为远程适配器似乎需要 Arquillian 测试与 WebLogic 容器在同一主机上运行。