如何使用 Detyped Java API 以编程方式在 WildFly/JBoss 中添加缓存

问题描述 投票:0回答:1

有很多示例可以说明如何使用 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>
如果有有用的提示就太好了

========== 工作原理 ==========

终于明白了。一个好的方法似乎如下:

  1. API 文档中搜索您想要解决的问题,例如缓存的传输配置https://docs.wildfly.org/26.1/wildscribe/subsystem/infinispan/cache-container/transport/jgroups/index.html指出这里需要使用jgroups类型

  2. 使用

    jboss-cli 测试您构建的内容(此概述可能对标准配置示例有所帮助:https://gist.github.com/cheinema/a68ae81f1bbdc695c755

  3. 找到正确的命令后,将它们

    翻译Java DMR API 以下示例展示了它的样子: /子系统=infinispan/cache-container=cache1/transport=jgroups:add(lock-timeout=20)

  4. 在Java中可以这样使用:

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);


configuration jboss client wildfly infinispan
1个回答
2
投票

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" }

© www.soinside.com 2019 - 2024. All rights reserved.