有很多示例可以说明如何使用 Native Management API https://docs.jboss.org/author/display/AS71/Management%20API%20reference.html 以编程方式添加 datasource 及其 Java 实现在 JBoss DMR (动态模型表示) https://github.com/jbossas/jboss-dmr
MasterTheBoss 给出了使用 Java 库并添加数据源的教程作为示例: https://www.mastertheboss.com/jbossas/jboss-as-7/using-jboss-management-api-programmatically/
因此,我找不到有用的文档或示例,其中将带有子元素的更复杂的结构添加到配置中。对于数据源,数据源下的所有(XML-)元素都将作为数据源的属性进行寻址,然后由服务器本身呈现,而对于以下Infinispan 缓存的情况,我找不到添加的匹配方法通过JBoss DMR进行配置。 需要使用 API 将以下配置的 XML 表示形式的片段添加到 infinispan 子系统中:
<cache-container name="cache1">
<transport lock-timeout="60000"/>
<replicated-cache name="replicated1">
<transaction mode="BATCH"/>
</replicated-cache>
<replicated-cache name="replicated2">
<transaction mode="BATCH"/>
</replicated-cache>
</cache-container>
如果有有用的提示就太好了========== 工作原理 ==========
终于明白了。一个好的方法似乎如下:
API 文档中搜索您想要解决的问题,例如缓存的传输配置https://docs.wildfly.org/26.1/wildscribe/subsystem/infinispan/cache-container/transport/jgroups/index.html指出这里需要使用jgroups类型
jboss-cli 测试您构建的内容(此概述可能对标准配置示例有所帮助:https://gist.github.com/cheinema/a68ae81f1bbdc695c755)
翻译到Java DMR API 以下示例展示了它的样子: /子系统=infinispan/cache-container=cache1/transport=jgroups:add(lock-timeout=20)
ModelNode cacheContainer = new ModelNode(); cacheContainer.get(ClientConstants.OP_ADDR).add("subsystem","infinispan");
cacheContainer.get(ClientConstants.OP_ADDR).add("cache-container","cache1"); cacheContainer.get(ClientConstants.OP_ADDR).add("transport","jgroups");
cacheContainer.get("lock-timeout").set(20); cacheContainer.get(ClientConstants.OP).set(ClientConstants.ADD);
echo-dmr /core-service=module-loading:read-attribute(name=module-roots, include-defaults)
{
"address" => [("core-service" => "module-loading")],
"operation" => "read-attribute",
"include-defaults" => true,
"name" => "module-roots"
}