Openfire --用户登录返回roster为空
来源:互联网 发布:淘宝代码生成器 编辑:程序博客网 时间:2024/05/17 19:57
【问题描述】
Openfire日志(Debugger Plugin):
C2S - RECV (3696162): <iq id="67bo5-2" type="get"><query xmlns="jabber:iq:roster"></query></iq>
INTERPRETED: <iq id="67bo5-2" type="get" from="zjx@10.10.122.171/Spark 2.6.3"><query xmlns="jabber:iq:roster"/></iq>
C2S - SENT (3696162): <iq type="result" id="67bo5-2" to="zjx@10.10.122.171/Spark 2.6.3"><query xmlns="jabber:iq:roster"/></iq>
【问题分析】
IQRosterHandler——
* Implements the TYPE_IQ jabber:iq:roster protocol. Clients
* use this protocol to retrieve, update, and rosterMonitor roster
* entries (buddy lists). The server manages the basics of
* roster subscriptions and roster updates based on presence
* and iq:roster packets, while the client maintains the user
* interface aspects of rosters such as organizing roster
* entries into groups.
private IQ manageRoster(org.xmpp.packet.Roster packet) throws UnauthorizedException,
UserAlreadyExistsException, SharedGroupException {
......
if ((sender.getNode() == null || !RosterManager.isRosterServiceEnabled() || <--此处isRosterServiceEnabled返回false,导致后面空roster回复
!userManager.isRegisteredUser(sender.getNode())) &&
IQ.Type.get == type) {
// If anonymous user asks for his roster or roster service is disabled then
// return an empty roster
IQ reply = IQ.createResultIQ(packet);
reply.setChildElement("query", "jabber:iq:roster");
return reply;
继续:
public static boolean isRosterServiceEnabled() {
boolean bRet = JiveGlobals.getBooleanProperty("xmpp.client.roster.active", true); <--原来“系统属性”-->"xmpp.client.roster.active"被置为false了
return bRet;
}
【解决方案】
“系统属性”-->"xmpp.client.roster.active"置为true,收发报文正确
C2S - RECV (2944378): <iq id="j9O8X-2" type="get"><query xmlns="jabber:iq:roster"></query></iq>
INTERPRETED: <iq id="j9O8X-2" type="get" from="zjx@10.10.122.171/Spark 2.6.3"><query xmlns="jabber:iq:roster"/></iq>
C2S - SENT (2944378): <iq type="result" id="j9O8X-2" to="zjx@10.10.122.171/Spark 2.6.3"><query xmlns="jabber:iq:roster"><item jid="wfp@10.10.122.171" name="wfp" subscription="both"><group>Friends</group></item></query></iq>
但是spark客户端在A电脑登录还是无法显示其roster,同一账号在B电脑上登录就显示正常;
尝试将C:\Users\lenovo\AppData\Roaming\Spark下的内容删除,同时重装spark,问题依然;
后面尝试在A中Spark面板 -->联系人 -->显示离线用户 选项勾选,即能够正常看到roster;但是B中没有勾选却能正常显示。估计此为spark的bug
- Openfire --用户登录返回roster为空
- openfire源码解读-用户登录
- roster
- 使用django的用户帐号登录 openfire
- Openfire 好友状态的发送(用户登录)
- 使用django的用户帐号登录openfire
- OpenFire源码学习之五:用户登录
- openfire 后台用户登录认证代码解析
- 服务器返回文本为空
- 为何GetProcAddress()返回为空?
- IOS pathForResource 返回为空
- findViewById 返回值为空
- DWR:返回值为空?
- 查询判断某个字段是否为空 不为空返回1 为空返回0
- 【Openfire】网页版的用户注册、登录、修改密码
- 利用Jmeter3.1测试Openfire--登录和批量创建用户
- 实现用户登录时若没有输入用户名,给出用户名不能为空的提示,若没有输入密码,给出密码不能为空的提示
- java web点击链接用js判断用户是否已经登录 (js获取session及判断是否为空)
- 企业社交工具为何走向衰退?
- 第二周(课上例题)——建立和输出一个简单的链表
- 如何在 Windows* 8 上为 Android* 设备安装英特尔® USB 驱动程序
- 将DataReader转换为DataTable
- 圆形图片和边框
- Openfire --用户登录返回roster为空
- 【OpenCV】访问Mat图像中每个像素的值
- 明天就是db考试了
- jQuery中JSONP 前端+后端
- OBJECT和EMBED标签
- hive-0.9.0的安装
- 经典SQL语句大全
- equals() ,hashcode() 使用
- 对与几种javax.el.PropertyNotFoundException: Property 'XXX' not found on type java.lang.String问题原因