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 连接因内部错误而关闭的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 编译因内部错误而失败

BigQuery 数据传输作业因内部错误而失败(错误:80038528)

Vertex AI 模型批量预测因内部错误而失败

连接因错误而关闭?

节点 mongodb:错误:连接因 parseError 而关闭

XMPP android中的连接因错误而关闭