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

ux6nzvsh  于 2023-10-20  发布在  Java
关注(0)|答案(2)|浏览(185)

JBoss DMR*(动态模型表示)* https://github.com/jbossas/jboss-dmr中,有许多示例可用于说明如何使用 * 本机管理API* https://docs.jboss.org/author/display/AS71/Management%20API%20reference.html及其Java实现来添加插件**
例如,在 MasterTheBoss 上提供了一个使用Java库和一个Java附加程序作为示例的教程:https://www.mastertheboss.com/jbossas/jboss-as-7/using-jboss-management-api-programmatically/
因此,我找不到有用的文档或示例,其中包含子元素的更复杂的结构被添加到配置中。对于缓存,缓存下的所有(XML-)元素都将被寻址为缓存的属性,然后由服务器本身呈现,而对于下面的Infinispan缓存的情况,我无法找到通过 JBoss DMR 添加配置的匹配方法。需要使用API在infinispan子系统中添加以下配置XML表示的片段:

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

一个有用的提示会很棒

wribegjk

wribegjk1#

jboss-cli可以使用echo-dmr命令显示命令的dmr结构:

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

olmpazwi2#

终于找到了一个好的方法似乎如下:
1.在API文档中搜索您想要解决的问题,例如:高速缓存https://docs.wildfly.org/26.1/wildscribe/subsystem/infinispan/cache-container/transport/jgroups/index.html的传输配置,指出此处需要使用jgroups类型
1.使用jboss-configuration来测试您构建的内容(以下概述标准配置的示例可能会有所帮助:https://gist.github.com/cheinema/a68ae81f1bbdc695c755
1.找到正确的命令后,将其转换Java DMR API以下示例显示了这一过程的样子:

  • /subsystem=infinispan/cache-container=cache1/transfer =jgroups:add(lock-timeout=20)*

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

您首先在第一行中将add添加到您想要修改的地址,然后在那里定义您想要设置属性(在本例中为锁定超时),然后执行操作-此处为ADD(例如,也可能是REMOVE)。

相关问题