OPENFIRE 지원 EMOJI(OPENFIRE 3.8.1 버전)
2327 단어 openfire
오픈파이어로 XMPP 서버를 구축할 때 클라이언트가 이모티콘 문자를 보내면 연결이 끊깁니다. 오류 로그 부분은 다음과 같습니다.
2013.05.21 12:57:44 org.jivesoftware.openfire.nio.ConnectionHandler – Closing connection due to error while
processing message:
이모티콘
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에 있습니다.자바의 384줄에 문제가 생겼습니다. 여기는 XML의 합법성 검증 코드입니다. 이모티콘 문자의 인코딩은 합법적인 XML 문자 범위에 있지 않기 때문에 여기를 고치면 정상적으로 이모티콘을 받을 수 있습니다.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, 오픈파이어 서비스 다시 시작하면 OK.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
OPENFIRE 지원 EMOJI(OPENFIRE 3.8.1 버전)오픈파이어로 XMPP 서버를 구축할 때 클라이언트가 이모티콘 문자를 보내면 연결이 끊깁니다. 오류 로그 부분은 다음과 같습니다. 2013.05.21 12:57:44 org.jivesoftware.openfire.ni...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.