使用Wildfly 26与Arquillian Remote部署时遇Unknown service name jmx错误求助
解决Wildfly 26 + Arquillian远程容器部署时的"Unknown service name jmx"错误
错误原因
该错误是因为Arquillian远程容器尝试通过JBoss Remoting 3访问JMX服务时,Wildfly 26未正确暴露该服务,或是Arquillian适配器版本与Wildfly版本不兼容导致的。
解决方案
1. 匹配Arquillian适配器与Wildfly版本
wildfly-arquillian-container-remote:2.2.0.Final适配的是较旧版本的Wildfly(约Wildfly 22),与Wildfly 26不兼容。需将适配器版本更新为与Wildfly主版本一致的版本,比如26.1.3.Final:
<!-- pom.xml中更新依赖 --> <dependency> <groupId>org.wildfly.arquillian</groupId> <artifactId>wildfly-arquillian-container-remote</artifactId> <version>26.1.3.Final</version> <scope>test</scope> </dependency>
2. 确保Wildfly开启JMX远程访问
修改Wildfly的standalone/configuration/standalone.xml(域模式下修改domain.xml),在JMX子系统中添加远程连接器:
找到<subsystem xmlns="urn:jboss:domain:jmx:1.6">节点,添加如下配置:
<remote-connector use-management-endpoint="true"/>
该配置会复用Wildfly的管理端点(默认9990端口)提供JMX远程访问。
3. 配置Arquillian远程连接参数
在src/test/resources下创建或修改arquillian.xml,指定Wildfly的管理地址、端口及认证信息:
<arquillian xmlns="http://jboss.org/schema/arquillian" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd"> <container qualifier="wildfly-remote" default="true"> <configuration> <property name="managementAddress">localhost</property> <property name="managementPort">9990</property> <property name="username">admin</property> <property name="password">your-admin-password</property> </configuration> </container> </arquillian>
4. 确认Wildfly管理用户已创建
若未创建管理用户,执行Wildfly bin目录下的add-user.sh(Linux/macOS)或add-user.bat(Windows),创建一个拥有admin权限的用户,用于远程认证。
内容的提问来源于stack exchange,提问作者Lucas Pottersky
相关产品推荐
相关产品推荐

