在独立模式的JBoss 7.1.1中,所有JNDI绑定都在jboss:domain:naming:1.1子系统的standalone.xml文件中配置。根据文档,当服务器运行时,无法修改standalone.xml。我试过使用JBoss CLI,但我不知道如何编写/修改资源。
如何在不重启jboss的情况下更改JNDI中的值?
答案 0 :(得分:4)
应该对您有所帮助: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)
没试过,但我希望这有帮助!
答案 1 :(得分:3)
这个问题有很多观点,所以我会回答。受@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
中存储(更新),以便在服务器重新启动后不会丢失。
答案 2 :(得分:1)
我一直在寻找如何在运行时添加或修改JNDI绑定,但是我需要在Wildfly 9域(集群)配置(不是独立的)中执行此操作,该配置与JBoss 7几乎相同但是,我想不出一种方法来有效地应用更改而无需重新启动所有服务器。
首先,进入JBoss命令行界面并连接到服务器域控制器:
./jboss-cli.sh
connect
首先,您需要找到哪个概要文件在服务器组上处于活动状态,因此,在服务器根 / 上,输入以下命令:
cd server-group=
ls
此后,您应该输入cd {{your_server_group_name}}
输入清单命令(ls)中显示的唯一服务器组,然后再次输入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
请注意,在绑定名称中用反斜杠( \ 和 /(斜杠)引号是必需的。 em>)。
要在此绑定中修改属性,应使用: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 snippets page
此配置已在Wildfly 9.0.1中成功测试