在独立模式的 JBoss 7.1.1 中,所有 JNDI 绑定都在 jboss:domain:naming:1.1 子系统的standalone.xml 文件中配置。根据文档,standalone.xml 在服务器运行时无法修改。我尝试使用 JBoss CLI,但我不知道如何编写/修改资源。
如何在不重新启动 jboss 的情况下更改 JNDI 中的值?
应该帮助你:https ://docs.jboss.org/author/display/AS71/JNDI+Reference
主题 - 将条目绑定到 JNDI:
一个示例standalone.xml 可能如下所示:
<subsystem xmlns="urn:jboss:domain:naming:1.1" > <bindings> <simple name="java:global/a" value="100" type="int" /> <object-factory name="java:global/b" module="com.acme" class="org.acme.MyObjectFactory" /> <lookup name="java:global/c" lookup="java:global/b" /> </bindings> </subsystem>
要通过 CLI 添加这些条目:/subsystem=naming/binding=java\:global\/mybinding:add(binding-type=simple, type=long, value=1000)
要查看 add 命令采用的所有选项(这实际上可用于获取任何 CLI 命令的描述):/subsystem=naming/binding=*:read-operation-description(name=add)
没试过,但我希望这会有所帮助!
这个问题有很多观点,所以我会回答它。受@mik 响应的启发,我发现要更改某些 JNDI 密钥的值,例如更改java:jboss/api/key
为 newApiKey 运行JBoss CLI并执行:
connect
/subsystem=naming/binding=java\:jboss\/api\/key/:write-attribute(name=value,value=newApiKey)
更改将立即在服务器上可见并存储(更新),standalone.xml
因此在服务器重新启动后不会丢失。
我正在寻找如何在运行时添加或修改 JNDI 绑定,但我需要在 Wildfly 9 域(集群)配置(不是独立)中执行此操作,这与 JBoss 7 的配置几乎相同。但是,我想不出一种在不重新启动所有服务器的情况下有效应用更改的方法。
首先,进入 JBoss 命令行界面并连接到您的服务器域控制器:
./jboss-cli.sh
connect
首先,您需要找到服务器组上哪个配置文件处于活动状态,因此,在服务器根/上,输入以下命令:
cd server-group=
ls
之后,您应该输入列表命令 (ls) 中显示的唯一服务器组cd {{your_server_group_name}}
,然后ls
再次输入并查找名为profile的条目以检查哪个是活动的。让我们将full-ha视为我们示例的活动配置文件。
cd ..
接下来,通过键入并输入以下命令返回到根配置文件夹 /以导航和查看所有可用的 JNDI 绑定及其当前值:
cd profile=full-ha/subsystem=naming/binding=
:read-resource(recursive=true)
通过这样做,您将能够看到所有可用的 JNDI 绑定及其属性,如果您只想列出绑定名称,请键入ls
而不是最后一个命令。
要修改绑定,请键入cd
前面命令中列出的绑定的名称和名称。假设您要更改名为java:/webservice.url的绑定的值,那么您应该输入
cd java\:\/webservice.url
请注意,有必要在绑定名称中引用一些字符,例如:(冒号)和/(斜杠)和反斜杠 ( \ )。
要修改此绑定中的属性,您应该使用 :write-attribute 命令。在此示例中,假设您要修改(或添加)一个名为“value”的属性,其内容为“this is a value”:
:write-attribute(name=value,value="this is a value")
为了应用此更改,您需要通过键入以下命令重新启动集群中的所有服务器:
/server-group={{server-group-name}}:restart-servers
如果您想了解更多添加或删除 JNDI 绑定的命令,请查看此jboss-cli 片段页面
此配置已在 Wildfly 9.0.1 中测试成功