用openfire搭建XMPP服务器时,客户端一发送emoji表情文字就会掉线,错误日志片段如下
2013.05.21 12:57:44 org.jivesoftware.openfire.nio.ConnectionHandler – Closing connection due to error while
processing message: <message type=”chat” to=”18@chat.aiba.com” dateline=”1369112264.017495″><body>这里是
emoji表情</body></message> java.lang.NumberFormatException: For input string: “?” at
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt
(Integer.java:481) at org.jivesoftware.openfire.net.MXParser.more(MXParser.java:384) at
org.jivesoftware.openfire.net.MXParser.nextImpl(MXParser.java:85) at org.xmlpull.mxp1.MXParser.nextToken
(MXParser.java:1100) at org.dom4j.io.XMPPPacketReader.parseDocument(XMPPPacketReader.java:317) at
org.dom4j.io.XMPPPacketReader.read(XMPPPacketReader.java:154) at
org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:159)
可以看到,在MXParser.java的第384行,出了问题,这里是XML的合法性验证代码,因为emoji表情文字的编码不在合法的XML字符范围内,所以只要将这里改掉,就可以正常收发emoji了 将MXParser.java中的more函数改为如下:
@Override protected char more() throws IOException, XmlPullParserException { final char codePoint = super.more(); // note – this does NOT return a // codepoint now, but simply a // (single byte) character! if ((codePoint == 0x0) || // 0×0 is not allowed, but flash clients insist on sending // this as the very first character of a stream. We should // stop allowing this codepoint after the first byte has // been parsed. (codePoint == 0x9) || (codePoint == 0xA) || (codePoint == 0xD) || ((codePoint >= 0x20) && (codePoint <= 0xFFFD)) || ((codePoint >= 0xE000) && (codePoint <= 0xFFFD)) || ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF))) { return codePoint; } throw new XmlPullParserException("Illegal XML character: " + Integer.parseInt(codePoint + "", 16)); }
重新编译得到openfire.jar,替换服务器上的openfire.jar,再重启openfire服务,就OK了
相关推荐
4. **插件开发**:Openfire支持插件扩展,允许开发者通过编写插件增加服务器的功能。API文档中可能包含插件开发指南,包括如何创建、部署和调用插件API,以及如何处理事件和集成其他服务。 5. **安全性**:Openfire...
openfire老版本,3.8rpm版本,可以直接下载来用openfire老版本,3.8rpm版本,可以直接下载来用
2. **安全性**:Openfire支持SSL/TLS加密,保证了通信过程中的数据安全,防止信息被窃听或篡改。同时,服务器端还支持用户认证和访问控制,确保只有授权的用户可以接入系统。 3. **可扩展性**:Openfire的插件架构...
Openfire 4.2.3是其最新的稳定版本,该版本可能包括性能优化、安全更新以及对新特性的支持。在安装Openfire 4.2.3 x64时,需要注意操作系统是否为64位,因为该版本是针对64位系统的。安装过程中,你需要配置数据库...
- **安全性**:Openfire支持SSL/TLS加密,确保通信数据的安全。 - **可扩展性**:通过插件机制,Openfire可以轻松添加新的功能,如视频会议、监控、审计等。 - **管理界面**:提供直观的Web管理界面,便于管理员...
2. **XEP(XMPP Extension Protocols)**:Openfire支持众多XEP,如XEP-0045(多用户聊天)、XEP-0199(XMPP Ping)等,增强了服务器的功能。 3. **认证与授权**:Openfire使用标准的XMPP认证机制,同时提供了用户...
3. **数据库设置**:Openfire支持多种数据库,如内置的HSQLDB、MySQL、PostgreSQL等。根据你的需求选择合适的数据库类型,并提供相应的连接参数。 4. **端口配置**:确保Openfire使用的端口(如5222、5269、7070等)...
3. **安全通信**:Openfire支持SSL/TLS加密,确保了用户数据传输的安全性,防止信息在传输过程中被窃取或篡改。 4. **多语言支持**:Openfire可以提供多种语言的界面,方便不同地区用户使用。 5. **插件扩展**:该...
1. **实时通讯协议支持**:Openfire支持XMPP(Extensible Messaging and Presence Protocol),这是一种开放标准,使得用户可以通过聊天、视频通话、文件传输等方式进行沟通。 2. **多平台兼容**:由于Openfire基于...
你可以访问Openfire官网获取最新版本的安装包,或者通过wget命令下载: ```bash wget https://www.igniterealtime.org/downloads/openfire/latest/openfire_latest.tgz tar -zxvf openfire_latest.tgz ``` 将解压...
4. **XMPP 协议**:Openfire支持XMPP,这是一种基于XML的开放标准,用于即时消息传递和在线状态服务。XMPP使得Openfire可以与其他兼容的客户端(如Pidgin、Spark等)无缝集成,实现跨平台的通信。 5. **安全性**:...
1. 用户管理:Openfire支持创建和管理用户账户,可以对用户进行分组和权限设置,方便组织架构的构建和管理。 2. 聊天室:Openfire提供多用户聊天室功能,用户可以创建公共或私有的聊天室进行群体讨论。 3. 实时...
- 注意版本兼容性,确保`bouncycastle.jar`版本与Openfire 3.9.3及其他依赖库兼容,避免潜在的运行时冲突。 - 在进行代码修改时,遵循Openfire的开发规范和最佳实践,确保代码的质量和可维护性。 - 测试是关键,确保...
5. **客户端接入**:Openfire支持多种客户端,包括Spark、Pidgin、Adium等。用户只需在客户端上配置Openfire服务器的信息,即可开始即时通讯。 6. **安全与优化**:为确保系统安全,记得定期更新Openfire到最新版本...
openfire + zookeeper实现服务器分布式 集群功能
4. **添加插件**:Openfire支持插件扩展,为了实现语音聊天,我们需要找到并安装相关的语音插件,如Jitsi或MUC(多用户聊天室)。 **Web端实现** 1. **HTML/CSS**:构建聊天界面,包括输入框、发送按钮、联系人列表...
8. **数据库兼容性**:Openfire支持多种数据库系统,如MySQL、PostgreSQL和Oracle,用户可以根据自己的需求选择合适的数据库。 9. **监控与日志**:系统提供了详细的日志记录和监控工具,帮助管理员追踪系统状态,...
OpenFire是一款基于Java开发的XMPP服务器,支持多用户聊天、群聊、文件传输等功能,广泛应用于企业内部沟通、在线客服以及游戏社交等领域。 首先,书中会介绍OpenFire的基本概念和架构。XMPP(Extensible Messaging...
Openfire是一款基于Java的开源即时通讯(IM)服务器,它提供了强大的实时通信功能,支持XMPP协议,可以用于构建企业级的聊天、协作系统。在本文中,我们将深入探讨Openfire的相关资源,包括如何搭建、源码配置、编译...