Bootable WildFly 25中messaging-activemq配置失败求助
问题:WildFly 25迁移中messaging-activemq CLI配置适配Elytron安全体系
问题背景
将可引导WildFly从24版本迁移至25.0.1.Final时,使用wildfly-jar-maven-plugin执行CLI配置messaging-activemq子系统,原WildFly24中正常运行的CLI命令在WildFly25中执行失败。
旧CLI命令(WildFly 24可用,WildFly 25执行失败)
/subsystem=messaging-activemq/server=default:add /subsystem=messaging-activemq/server=default/security-setting=#:add /subsystem=messaging-activemq/server=default/security-setting=#/role=guest:add(send=true,consume=true,create-non-durable-queue=true, delete-non-durable-queue=true) /subsystem=messaging-activemq/server=default/address-setting=#:add(dead-letter-address=jms.queue.DLQ, expiry-address=jms.queue.ExpiryQueue, expiry-delay=-1L, max-delivery-attempts=10, max-size-bytes=10485760, page-size-bytes=2097152, message-counter-history-day-limit=10) /subsystem=messaging-activemq/server=default/http-connector=http-connector:add(socket-binding=http, endpoint=http-acceptor) /subsystem=messaging-activemq/server=default/http-connector=http-connector-throughput:add(socket-binding=http, endpoint="http-acceptor-throughput" ,params={batch-delay="50"}) /subsystem=messaging-activemq/server=default/in-vm-connector=in-vm:add(server-id="0", params={buffer-pooling=false}) /subsystem=messaging-activemq/server=default/http-acceptor=http-acceptor:add(http-listener="default") /subsystem=messaging-activemq/server=default/http-acceptor=http-acceptor-throughput:add(http-listener="default", params={batch-delay="50", direct-deliver="false"}) /subsystem=messaging-activemq/server=default/in-vm-acceptor=in-vm:add(server-id="0", params={buffer-pooling=false}) /subsystem=messaging-activemq/server=default/jms-queue=ExpiryQueue:add(entries=["java:/jms/queue/ExpiryQueue"]) /subsystem=messaging-activemq/server=default/jms-queue=DLQ:add(entries=["java:/jms/queue/DLQ"]) /subsystem=messaging-activemq/server=default/jms-queue=LoggingQueue:add(entries=["java:/jms/queue/LoggingQueue"]) /subsystem=messaging-activemq/server=default/connection-factory=InVmConnectionFactory:add(entries=[java:/ConnectionFactory], connectors=[in-vm]) /subsystem=messaging-activemq/server=default/connection-factory=RemoteConnectionFactory:add(entries=[java:jboss/exported/jms/RemoteConnectionFactory], connectors=[http-connector]) /subsystem=messaging-activemq/server=default/pooled-connection-factory=activemq-ra:add(entries=[ava:/JmsXA java:jboss/DefaultJMSConnectionFactory], connectors=[in-vm], transaction=xa)
执行错误信息
[ERROR] Exception in thread "main" java.lang.reflect.InvocationTargetException [ERROR] at jdk.internal.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) [ERROR] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [ERROR] at java.base/java.lang.reflect.Method.invoke(Method.java:566) [ERROR] at org.wildfly.plugins.bootablejar.maven.cli.CLIWrapper.handle(CLIWrapper.java:82) [ERROR] at org.wildfly.plugins.bootablejar.maven.cli.CLIForkedExecutor.main(CLIForkedExecutor.java:49) [ERROR] Caused by: org.jboss.as.cli.CommandLineException: { [ERROR] "outcome" => "failed", [ERROR] "failure-description" => "WFLYCTL0369: Required capabilities are not available: [ERROR] org.wildfly.security.legacy-security-domain.other; There are no known registration points which can provide this capability.", [ERROR] "rolled-back" => true [ERROR] }
当前环境配置
wildfly-jar-maven-plugin启用的layers:<layer>datasources</layer> <layer>jaxrs-server</layer> <layer>jpa</layer> <layer>cdi</layer> <layer>ee</layer> <layer>security-manager</layer> <layer>elytron</layer> <layer>ee-security</layer> <layer>ejb</layer> <layer>ejb-lite</layer> <layer>mail</layer> <layer>management</layer> <layer>web-server</layer> <layer>webservices</layer> <layer>batch-jberet</layer> <layer>messaging-activemq</layer> <layer>resource-adapters</layer> <layer>transactions</layer>- WildFly25的
standalone-full.xml中messaging-activemq子系统默认包含<security elytron-domain="ApplicationDomain"/>,但旧CLI未生成该配置;且WildFly25已移除legacy-security层,导致依赖遗留安全域的命令执行失败。
适配Elytron安全体系的等效CLI命令
修改核心在于添加Elytron安全域配置,并修正原命令中的拼写错误(ava:/JmsXA改为java:/JmsXA):
# 添加server并指定Elytron安全域 /subsystem=messaging-activemq/server=default:add(security={elytron-domain=ApplicationDomain}) # 安全设置与原命令一致 /subsystem=messaging-activemq/server=default/security-setting=#:add /subsystem=messaging-activemq/server=default/security-setting=#/role=guest:add(send=true,consume=true,create-non-durable-queue=true, delete-non-durable-queue=true) # 地址设置与原命令一致 /subsystem=messaging-activemq/server=default/address-setting=#:add(dead-letter-address=jms.queue.DLQ, expiry-address=jms.queue.ExpiryQueue, expiry-delay=-1L, max-delivery-attempts=10, max-size-bytes=10485760, page-size-bytes=2097152, message-counter-history-day-limit=10) # 连接器、接收器配置与原命令一致 /subsystem=messaging-activemq/server=default/http-connector=http-connector:add(socket-binding=http, endpoint=http-acceptor) /subsystem=messaging-activemq/server=default/http-connector=http-connector-throughput:add(socket-binding=http, endpoint="http-acceptor-throughput" ,params={batch-delay="50"}) /subsystem=messaging-activemq/server=default/in-vm-connector=in-vm:add(server-id="0", params={buffer-pooling=false}) /subsystem=messaging-activemq/server=default/http-acceptor=http-acceptor:add(http-listener="default") /subsystem=messaging-activemq/server=default/http-acceptor=http-acceptor-throughput:add(http-listener="default", params={batch-delay="50", direct-deliver="false"}) /subsystem=messaging-activemq/server=default/in-vm-acceptor=in-vm:add(server-id="0", params={buffer-pooling=false}) # JMS队列配置与原命令一致 /subsystem=messaging-activemq/server=default/jms-queue=ExpiryQueue:add(entries=["java:/jms/queue/ExpiryQueue"]) /subsystem=messaging-activemq/server=default/jms-queue=DLQ:add(entries=["java:/jms/queue/DLQ"]) /subsystem=messaging-activemq/server=default/jms-queue=LoggingQueue:add(entries=["java:/jms/queue/LoggingQueue"]) # 连接工厂配置与原命令一致 /subsystem=messaging-activemq/server=default/connection-factory=InVmConnectionFactory:add(entries=[java:/ConnectionFactory], connectors=[in-vm]) /subsystem=messaging-activemq/server=default/connection-factory=RemoteConnectionFactory:add(entries=[java:jboss/exported/jms/RemoteConnectionFactory], connectors=[http-connector]) # 修正拼写错误:ava:/JmsXA → java:/JmsXA /subsystem=messaging-activemq/server=default/pooled-connection-factory=activemq-ra:add(entries=[java:/JmsXA java:jboss/DefaultJMSConnectionFactory], connectors=[in-vm], transaction=xa)
内容的提问来源于stack exchange,提问作者Thore Gröndahl
相关产品推荐
相关产品推荐

