Openfire 连接因内部错误而关闭
Posted
技术标签:
【中文标题】Openfire 连接因内部错误而关闭【英文标题】:Openfire connection closed with internal error 【发布时间】:2016-06-13 13:58:38 【问题描述】:所以我有这段代码可以连接到 openfire
XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration.builder();
config.setUsernameAndPassword(loginUser, passwordUser);
config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
config.setServiceName(serverAddress);
config.setHost(serverAddress);
config.setPort(5222);
config.setDebuggerEnabled(true);
connection = new XMPPTCPConnection(config.build());
ReconnectionManager.getInstanceFor(connection).enableAutomaticReconnection();
System.out.println("Reconnection enabled : " + ReconnectionManager.getInstanceFor(connection).isAutomaticReconnectEnabled());
ConnectionListener connectionListener = new XMPPConnectionListener();
connection.addConnectionListener(connectionListener);
但是当我尝试连接时出现此错误:
org.jivesoftware.smack.XMPPException$StreamErrorException: internal-server-error 你可以在http://xmpp.org/rfcs/rfc6120.html#streams-error-conditions阅读更多关于这个流错误的含义 在 org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1007) 在 org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(XMPPTCPConnection.java:948) 在 org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:963) 在 java.lang.Thread.run(Thread.java:744)
编辑: Openfire 的日志:
警告日志:
2016.06.13 11:06:31 org.apache.mina.core.filterchain.DefaultIoFilterChain - Unexpected exception from exceptionCaught handler.
java.lang.NoSuchMethodError: java.util.concurrent.ConcurrentHashMap.keySet()Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
at org.jivesoftware.openfire.roster.Roster.broadcastPresence(Roster.java:628)
at org.jivesoftware.openfire.handler.PresenceUpdateHandler.broadcastUpdate(PresenceUpdateHandler.java:309)
at org.jivesoftware.openfire.handler.PresenceUpdateHandler.process(PresenceUpdateHandler.java:163)
at org.jivesoftware.openfire.handler.PresenceUpdateHandler.process(PresenceUpdateHandler.java:138)
at org.jivesoftware.openfire.handler.PresenceUpdateHandler.process(PresenceUpdateHandler.java:202)
at org.jivesoftware.openfire.PresenceRouter.handle(PresenceRouter.java:144)
at org.jivesoftware.openfire.PresenceRouter.route(PresenceRouter.java:80)
at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:88)
at org.jivesoftware.openfire.SessionManager$ClientSessionListener.onConnectionClose(SessionManager.java:1267)
at org.jivesoftware.openfire.nio.NIOConnection.notifyCloseListeners(NIOConnection.java:266)
at org.jivesoftware.openfire.nio.NIOConnection.close(NIOConnection.java:248)
at org.jivesoftware.openfire.nio.ConnectionHandler.exceptionCaught(ConnectionHandler.java:162)
我尝试连接到本地 openfire 服务器(windows),我成功了,但是当我尝试连接到 ubuntu openfre 服务器时失败了。 任何帮助将不胜感激。
【问题讨论】:
引用异常的消息:“internal-server-error 你可以在xmpp.org/rfcs/rfc6120.html#streams-error-conditions阅读更多关于这个流错误的含义。 我做的第一件事就是哇!没有找到.. 我很确定 Openfire 提供了包含internal-server-error
发送原因的深入诊断日志消息。
我添加了警告日志
但不是相关部分。
【参考方案1】:
较新版本的 Openfire 需要 Java 8(或更高版本)。
【讨论】:
我不能反驳你,但是不使用 OpenJDK 怎么办?我真的很感兴趣... 我没有就使用 OpenJRE 或任何其他符合 Java 8 的运行时环境发表任何声明。 我知道,但我知道你是 Openfire 的“管理员”,我指的是官方网站上的 cmets(Guus der Kinderen 3 月 24 日)@Flow 有效点:我只是在 ingiterealtime.org 社区论坛中表达这个请求。 好吧,我有 openjdk-8 仍然是同样的错误,我正在尝试使用 oracle jdk【参考方案2】:准确地说:openfire 需要 oracle jre 8 而不是 Openjdk
【讨论】:
oracle jre 7 怎么样? 我认为它是 Oracle JRE 还是 OpenJRE 并不重要。另见***.com/questions/22358071/… 相信我,确实如此,至少这是我最近的经历,openjdk 客户端无法连接到服务器,但是当我更改为 oracle 的 jre 时一切正常。 我在 Eclipse 中运行 Openfire 时遇到了同样的问题,基本上是在 ConcurrentHashMap 上更改了方法签名。为了使用 Java7 运行它,我将地图声明为接口(地图)并添加了一些演员表。但是我现在需要避免在真实服务器上出现问题,如果可能没有安装 JRE8 ;)以上是关于Openfire 连接因内部错误而关闭的主要内容,如果未能解决你的问题,请参考以下文章
BigQuery 数据传输作业因内部错误而失败(错误:80038528)