2020-09-26 17:20发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
如果在任何应用程序服务器中更改了配置数据,则需要在所有应用程序服务器中更新配置数据的值。
我有一个名为: xyz.on 的配置数据,在所有应用程序服务器中其布尔值均设置为false。 假设我访问App1Server并将其值更改为true。
如何在所有应用服务器的配置数据中将xyz.on的值更新为true
谢谢
嗨
我了解这一点的需要,当您有太多应用服务器并且需要更新特定属性而又不使服务器退回时,它会很有用。
可以有两个选择-
如果用例中的属性始终是自定义属性,则可以创建简单的项目类型并将此类值存储在DB中,而不是存储在属性文件中。 编写服务,利用缓存,您将能够采用集中式方式维护此类属性。 代替ConfigurationService,使用您的新服务。
另一个选择是查看 ConfigIntf.ConfigChangeListener 。 您基本上可以实现自己的 ConfigChangeListener 。 您将需要向将实例注册为ConfigChangeListener的bean提供一个初始化方法。
ConfigIntf.ConfigChangeListener
ConfigChangeListener
public void init(){ Registry.getCurrentTenant()。getConfig()。registerConfigChangeListener(this); }
现在是最困难的部分了:),在覆盖的 configChanged(String key,String value)方法中,您需要将消息广播到其他节点以更新其中的密钥值 他们的JVM。
configChanged(String key,String value)
我还没有自己实现,但是研究平台代码,这是我要采取的方向:
创建一个实现 BroadcastMessageListener 接口的类,将其称为 ConfigChangeBroadcastHandler 。
BroadcastMessageListener
ConfigChangeBroadcastHandler
在您的班级中插入 BroadcastService 。
BroadcastService
在构造函数中,通过调用 BroadcastService#registerBroadcastListener
BroadcastService#registerBroadcastListener
公开一个名为 sendMessage 的公共方法,您可以在其中将键/值作为输入。 此方法将从自定义 ConfigChangeListener 中的 configChanged 方法中调用。
sendMessage
configChanged
在将您的密钥(值)包装在RawMessage实例中时,调用BroadcastService#send。 ->应该注意将更改广播到集群中的所有节点
实施 processMessage 方法,在该方法中,您将 RawMessage 解析为键/值,然后调用 Config.setParameter(键,值),它将更新接收事件的节点的JVM中的属性。
processMessage
RawMessage
Config.setParameter(键,值)
同样,我尚未实现此用例,但这是[Cache] InvalidationBroadcastHandler 的工作方式。 而且,我认为无需多说,在服务器重新启动后,该值将恢复为原来的值。
InvalidationBroadcastHandler
干杯。
我不这样认为,在集群中,您必须在每个local.properties文件中配置相同的属性。
我认为您可能正在使用多个集群,并且正在从hac-> platform-> configuration更新数据。
如果在一台服务器上进行更改。 它不会在所有服务器上更新。 您必须手动更新所有群集节点中的值。
否则,请更新locale.properties中的值并在所有文件中部署更改。.因为一旦重新启动服务器,从hac所做的更改将丢失
所有hac配置都来自属性文件。 如果要更改某些属性,则必须在local.properties文件(配置文件夹)中添加属性和值。
如果要在其他服务器上更改此属性,请编辑local.properties文件。 如果您在hac中更改了某个值,则该值将不会永久保存;如果重新引导服务器,则该值将恢复为上一个值。
最多设置5个标签!
嗨
我了解这一点的需要,当您有太多应用服务器并且需要更新特定属性而又不使服务器退回时,它会很有用。
可以有两个选择-
如果用例中的属性始终是自定义属性,则可以创建简单的项目类型并将此类值存储在DB中,而不是存储在属性文件中。 编写服务,利用缓存,您将能够采用集中式方式维护此类属性。 代替ConfigurationService,使用您的新服务。
另一个选择是查看
ConfigIntf.ConfigChangeListener
。 您基本上可以实现自己的ConfigChangeListener
。 您将需要向将实例注册为ConfigChangeListener的bean提供一个初始化方法。现在是最困难的部分了:),在覆盖的
configChanged(String key,String value)
方法中,您需要将消息广播到其他节点以更新其中的密钥值 他们的JVM。我还没有自己实现,但是研究平台代码,这是我要采取的方向:
创建一个实现
BroadcastMessageListener
接口的类,将其称为ConfigChangeBroadcastHandler
。在您的班级中插入
BroadcastService
。在构造函数中,通过调用
BroadcastService#registerBroadcastListener
公开一个名为
sendMessage
的公共方法,您可以在其中将键/值作为输入。 此方法将从自定义ConfigChangeListener
中的configChanged
方法中调用。在将您的密钥(值)包装在RawMessage实例中时,调用BroadcastService#send。 ->应该注意将更改广播到集群中的所有节点
实施
processMessage
方法,在该方法中,您将RawMessage
解析为键/值,然后调用Config.setParameter(键,值)
,它将更新接收事件的节点的JVM中的属性。同样,我尚未实现此用例,但这是[Cache]
InvalidationBroadcastHandler
的工作方式。 而且,我认为无需多说,在服务器重新启动后,该值将恢复为原来的值。干杯。
我不这样认为,在集群中,您必须在每个local.properties文件中配置相同的属性。
我认为您可能正在使用多个集群,并且正在从hac-> platform-> configuration更新数据。
如果在一台服务器上进行更改。 它不会在所有服务器上更新。 您必须手动更新所有群集节点中的值。
否则,请更新locale.properties中的值并在所有文件中部署更改。.因为一旦重新启动服务器,从hac所做的更改将丢失
所有hac配置都来自属性文件。 如果要更改某些属性,则必须在local.properties文件(配置文件夹)中添加属性和值。
如果要在其他服务器上更改此属性,请编辑local.properties文件。 如果您在hac中更改了某个值,则该值将不会永久保存;如果重新引导服务器,则该值将恢复为上一个值。
一周热门 更多>