2

我知道如何通过 MySQL 插入一个新组,并且它在一定程度上有效。问题是如果您手动插入组,数据库更改不会加载到内存中。向进程发送一个 HUP 信号确实有效,但它很笨拙而且很糟糕。我渴望优雅:)

如果可能的话,我想做的是通过 MySQL 对组进行更改(添加/删除/更改),然后向 openfire 服务器发送 HTTP 请求以读取新更改。或者,与用户服务的工作方式类似,添加/删除/修改组。

如果有人可以提供帮助,我将不胜感激。

4

1 回答 1

1

在我看来,如果发送 HUP 信号对您有用,那么这实际上是让 Openfire 读取您的新组的一种非常简单、优雅和有效的方法,特别是如果您在 Openfire 服务器上使用以下命令执行此操作(并假设它运行的是 Linux/Unix 操作系统):

pkill -f -HUP openfire

如果您仍想发送 HTTP 请求以提示 Openfire 重新读取组,则以下 Python 脚本应该可以完成这项工作。它针对 Openfire 3.8.2,并依赖于 Python 的 mechanize 库,在 Ubuntu 中,该库与python-mechanize包一起安装。该脚本登录 Openfire 服务器,拉出 Cache Summary 页面,选择 Group 和 Group Metadata Cache 选项,启用提交按钮,然后提交表单以清除这两个缓存。

#!/usr/bin/python

import mechanize
import cookielib

# Customize to suit your setup
of_host = 'http://openfire.server:9090'
of_user = 'admin_username'
of_pass = 'admin_password'

# Initialize browser and cookie jar
br = mechanize.Browser()
br.set_cookiejar(cookielib.LWPCookieJar())

# Log into Openfire server
br.open(of_host + '/login.jsp')
br.select_form('loginForm')
br.form['username'] = of_user
br.form['password'] = of_pass
br.submit()

# Select which cache items to clear in the Cache Summary page
# On my server, 13 is Group and 14 is Group Metadata Cache
br.open(of_host + '/system-cache.jsp')
br.select_form('cacheForm')
br.form['cacheID'] = ['13','14']

# Activate the submit button and submit the form
c = br.form.find_control('clear')
c.readonly = False
c.disabled = False
r = br.submit()

# Uncomment the following line if you want to view results
#print r.read()
于 2013-08-14T18:50:42.777 回答