首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用org.jboss.dmr.ModelNode更改数据源属性

使用org.jboss.dmr.ModelNode更改数据源属性
EN

Stack Overflow用户
提问于 2018-08-07 16:48:46
回答 1查看 615关注 0票数 1

我在standalone.xml中有非常常规的数据源定义

代码语言:javascript
复制
<subsystem xmlns="urn:jboss:domain:datasources:2.0">
    <datasources>
        <datasource jndi-name="java:jboss/datasources/MYDS" pool-name="MYDS" enabled="true" use-java-context="true">
            <connection-url>jdbc:hsqldb:file:MYDB</connection-url>
            <security>
                <user-name>superman</user-name>
            </security>
        </datasource>
   </datasources>
</subsystem>

尝试在命令行中更改一些属性,这样做效果很好:

代码语言:javascript
复制
/subsystem=datasources/data-source=MYDS:write-attribute(name=connection-url,value=achooo)

结果:

代码语言:javascript
复制
{
    "outcome" => "success",
    "response-headers" => {
        "operation-requires-reload" => true,
        "process-state" => "reload-required"
    }
}

但是使用ModelNode应用程序接口,它让我抓狂。

代码语言:javascript
复制
ModelNode request = new ModelNode();
request.get(ClientConstants.OP_ADDR).add("subsystem", "datasources");
request.get(ClientConstants.OP_ADDR).add("data-source", "MYDS");
request.get(ClientConstants.OP).set(ClientConstants.WRITE_ATTRIBUTE_OPERATION);
request.get("connection-url").set("achooo");
myCliExecutor.executeCliCommandWithResult(request);

结果:

代码语言:javascript
复制
{
    "outcome" => "failed",
    "failure-description" => "JBAS014746: name may not be null",
    "rolled-back" => true,
    "response-headers" => {"process-state" => "reload-required"}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-10 01:09:45

你的DMR不太正确。对于write-attribute操作,您需要定义一个namevalue属性。它应该看起来更像这样:

代码语言:javascript
复制
final ModelNode address = new ModelNode().setEmptyList();
address.add("subsystem", "datasources");
address.add("data-source", "ExampleDS");

ModelNode request = new ModelNode();
request.get(ClientConstants.OP_ADDR).set(address);
request.get(ClientConstants.OP).set(ClientConstants.WRITE_ATTRIBUTE_OPERATION);
request.get("name").set("connection-url");
request.get("value").set("achooo");
myCliExecutor.executeCliCommandWithResult(request);

org.wildfly.core:controller-client中也有一个Operations帮助器,它应该会有所帮助。

代码语言:javascript
复制
final ModelNode address = Operations.createAddress("subsystem", "datasources", "data-source", "MYDS");
final ModelNod op = Operations.createWriteAttributeOperation(address, "connection-url", "achooo");
myCliExecutor.executeCliCommandWithResult(op);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51722583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档