我有带有 apache-mina 框架的服务器和客户端应用程序。我需要从服务器向客户端发送一个大型数组列表(包含 10000 个自定义对象)。我首先想到使用 GSON 字符串来传递数组列表,但我认为,创建那种巨大的字符串并发送它不是正确的方法。
在我的客户端应用程序中,我编写了一个连接方法:
public void connect() throws InterruptedException
{
Thread t = new Thread(new Runnable()
{
@Override
public void run()
{
connector = new NioSocketConnector();
connector.getSessionConfig().setReadBufferSize(1024);
TextLineCodecFactory t = new TextLineCodecFactory(Charset.forName("UTF-8"));
t.setEncoderMaxLineLength(100000);
t.setDecoderMaxLineLength(100000);
connector.getFilterChain().addLast("logger", new LoggingFilter());
connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(t));
connector.setHandler(handler);
ConnectFuture future = connector.connect(new InetSocketAddress("localhost", PORT));
future.awaitUninterruptibly();
if (!future.isConnected())
{
return;
}
IoSession session = future.getSession();
session.getConfig().setUseReadOperation(true);
session.getCloseFuture().awaitUninterruptibly();
connector.dispose();
}
});
t.start();
Thread.sleep(1000);
}
我应该使用什么过滤器来发送对象或容器而不将它们转换为字符串?是关于 BufferedWriteFilter 还是 WriteRequestFilter ?如果是这样,我该如何使用它们?