问题标签 [apache-mina]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
316 浏览

java - 使用 Mina 模拟 XMPP 服务器仅在部分时间有效

我创建了一个处理 PLAIN 加密节的模拟 XMPP 服务器。我可以使用 Pidgin 并完成整个会话创建,直到 Pidgin 认为用户在实际的 XMPP 服务器上并发送常规 ping。

但是,似乎并非所有消息都得到正确处理,当我成功登录时,这只是运气。我在说,也许是我实际连接的时间的 1/10。其他时候,Pidgin 似乎错过了一条消息,或者我将消息转储到快速传输中。

如果我启用 Pidgin 的 XMPP 控制台插件,第一个连接总是成功的,但第二个用户无法通过,通常在 Pidgin 请求服务发现时死亡。

我的 Mina 代码是这样的:

SimpleServerHandler负责消息/节处理和会话创建。该messageReceived函数如下所示:

最后,进程负责解析消息,并写入响应。我确实在我的写作中使用了 sychonized:

为简洁起见,我省略了我的处理代码,但它只是查找某些数据,制作响应和调用sessionWrite(...)

我的问题是,这种模式行得通吗?如果没有,我是否应该考虑将收到的消息推入队列并简单地处理来自定时器的队列?

0 投票
0 回答
184 浏览

java - 使用 UDP 查询服务器?

我要查询服务器(可以增加100左右)

我目前正在一个一个循环中迭代地查询它们,但这需要太多时间。

我在网上找到了 2-3 个选项,例如MultiThreadingNetty等。

我应该选择哪一个?

这是算法->

一次向 100 台服务器发送 100 个 UDP 数据

100 个服务器每个响应 1 个 UDP 数据包。(不再需要通信)

我需要处理那 1 个 UDP 数据包并将其存储在某处。(我的服务器应该同时接受多个数据包)

编辑: 游戏服务器

0 投票
0 回答
376 浏览

tcp - 如何处理 TCP 长连接故障转移?

我有许多服务器(集群)来运行相同的基于 TCP 长连接(apache mina 套接字)的应用程序。当一台服务器宕机时,其他服务器如何保持套接字连接,在不让客户端知道服务器宕机的情况下与客户端建立连接(失败) linux中的任何解决方案?谢谢。

0 投票
1 回答
1262 浏览

java - Java应用程序中非常慢的TCP握手

我们的 Java 应用程序由客户端和服务器组成。在我们的生产环境中,建立连接需要很长时间(约 40 秒)。

我们使用 tcpdump 捕获了网络流量,在建立连接时可以看到以下数据包:

在我们的其他环境中,所有三个数据包几乎都是瞬时发生的。

任何人都可以建议可能导致 38 秒延迟的原因,或建议诊断它的步骤吗?请注意,因为这是一个生产环境,所以我们很难更改诊断代码。

以下是有关我们环境的一些详细信息:

  • 客户端使用来自Apache Mina 1.0.1的 SocketConnector ,它在内部使用 java.nio.channel.SocketChannel.connect(..)。
  • 客户端在 IBM WebSphere 7.0.0.17 中运行
  • Java 版本 = 1.6.0,Java 编译器 = j9jit24,Java VM 名称 = IBM J9 VM
  • 操作系统是 AIX,版本 6.1
0 投票
2 回答
2029 浏览

apache-camel - 使用 Apache Camel Mina 组件实现请求-回复协议

我需要通过 TCP 为基于 XML-RPC 的服务实现消费者。在建立与服务器的连接时,它需要

  1. 身份验证凭据由客户端发送
  2. 客户端发送事件订阅请求,最后
  3. 客户端将切换到“接收”模式,其中消息将异步发送
  4. 当客户端不再对接收更多事件感兴趣时,客户端应该“放松”步骤 1-3。

因此,我想使用 Apache Camel 来实现客户端,具有明显的 Mina 组件入口端点(“mina:tcp:// host :_port_?textline=true&decoderMaxLineLength=10240&sync=true”)。我的问题是,我将如何实施上述步骤 1、2 和 4?在调用 RouteBuilder 中的处理器之前,我将如何执行这些“握手”步骤?骆驼甚至可以做到这一点,还是我必须编写一个直接的 Mina 客户端来处理这个问题。是否有更好的选择来处理这种类型的集成场景?

谢谢你。

-桑蒂

0 投票
1 回答
2518 浏览

java - 使用 Mina JAR 依赖项而不是捆绑包?

Mina 最近似乎将他们的工件部署为*.bundle文件,这至少是令人讨厌的,充其量是彻头彻尾的邪恶。

如果我像这样在 Maven 中依赖 Mina:

...然后我收到以下错误:

我不确定为什么它仍在寻找*.bundle文件而不是*.jar文件。为什么它不查找和查找 JAR 文件?

这尤其令人沮丧,因为我有一些依赖于这个项目的项目,而且如果没有 Mina JAR,它们都会失败。旧的 Java JAR 发生了什么?

0 投票
1 回答
398 浏览

apache-camel - 在 Camel 中聚合多个请求后响应 MINA 请求

我正在尝试实现一个 mina 服务,其中对最终消息的响应应该基于以前的消息。每条消息(header (1), data (n), end (1))都应该收到一个响应,但是对“end”消息的响应应该基于“header”,并且接收到的任何“data”消息也是如此作为“结束”消息。目前,我正在将消息路由到一个聚合器,该聚合器在找到特定关联 ID 的“标题”和“结束”消息时完成。不幸的是,响应是在消息发送到聚合器之前(或同时?)发送的,因此我无法访问聚合消息(其中包含构建正确响应所需的所有数据)时构建响应。

有没有办法做到这一点,而无需手动存储和访问累积的数据(即,无需重新实现骆驼的聚合器)?

编辑:

路线类似于:

为了清楚起见,我省略了一些标签和属性(correlationExpressioncompletionPredicatestrategyRef等)。

消息被正确聚合,并且在“完成”(即聚合时)时被正确处理。但是通过mina端点发送回客户端的响应是由 生成的messageProcessor,而不是由completeMessageProcessor.

例如(是的,这是一个相当人为的例子,但请耐心等待),假设该协议涉及客户端发送一个标头消息,其中包括它期望发送的数据消息的总数。然后它发送一些数据消息,这些数据消息的数量可能与它预期发送的不同。最后,它发送一个页脚或结束消息。然后,服务器应以预期消息数与实际消息数之间的差异进行响应。使用所写的路由,这是不可能的,因为消息的数量不知道messageProcessor,它只处理单个消息。,completeMessageProcessor具有聚合消息(由标头、所有数据和结尾组成)确实知道这个数字,但此时生成的响应不会传播回mina端点。

更改消息的解析以仅在接收到完整的组合消息时生成消息不是一种选择,因为服务器必须响应各个消息。

0 投票
1 回答
427 浏览

java - 使用 NIO 服务器和 IO 客户端

我有基于MinaNIO合作的服务器。

我尝试使用通常的java.net.Socket技术为此服务器创建TCP/IP客户端。我可以成功建立连接(即org.apache.mina.core.service.IoHandler.sessionOpened在客户端打开套接字后在服务器端调用)。但是,如果我尝试将一些字节写入套接字(从客户端),我对服务器没有任何影响(即org.apache.mina.core.service.IoHandler.messageReceived不会被调用)。

您能否解释一下为什么会发生这种情况是否可以从我通常客户端的基于 Socket 的应用程序向我的 NIO 服务器发送一些消息

0 投票
2 回答
351 浏览

netty - Netty/mina 合作。是否可以将 netty 的 ChannelBuffer 包装到 MINA 的 IOBuffer 中?

想法是将 apache vysper 集成到现有的 netty 应用程序中。是否可以将客户端的 ChannelBuffer 作为 mina'a ChannelBuffer 连接到 netty,以便将其委托给 vysper?

想法是为 apache vysper 制作基于 netty 的自定义端点,获取 ChanellBuffer 并将其传递给 vysper。

0 投票
1 回答
940 浏览

unit-testing - apache mina 客户端的单元测试

我有一个 mina 客户端,其连接器是 NioSocketConnector。我已经编写了这个客户端与真实服务器的集成测试。但是,我找不到进行单元测试的方法。例如,我想在不打开真实套接字的情况下测试我的自定义解码器和编码器是否正常工作。而且,我想测试我的消息在缓冲区等中是否正确排队。

我找到了一个用于测试的 DummySession 类,但我不确定这个类是否足以对客户端进行完整的单元测试。

Mina 建议使用它进行单元测试很容易,所以我真的想知道我该怎么做。请提供您的想法或示例代码链接。

提前致谢。