Java 我应该使用什么过滤器通过ApacheMina发送ArrayList
我有使用ApacheMina框架的服务器和客户端应用程序。我需要从服务器向客户端发送一个大的arraylist(包含10000个自定义对象)。我首先想到使用GSON字符串传递arraylist,但我认为,创建那种巨大的字符串并发送它不是一种正确的方式 在我的客户端应用程序中,我编写了一个连接方法:Java 我应该使用什么过滤器通过ApacheMina发送ArrayList,java,sockets,network-programming,nio,apache-mina,Java,Sockets,Network Programming,Nio,Apache Mina,我有使用ApacheMina框架的服务器和客户端应用程序。我需要从服务器向客户端发送一个大的arraylist(包含10000个自定义对象)。我首先想到使用GSON字符串传递arraylist,但我认为,创建那种巨大的字符串并发送它不是一种正确的方式 在我的客户端应用程序中,我编写了一个连接方法: public void connect() throws InterruptedException { Thread t = new Thread(new Runnable()
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?如果是这样,我如何使用它们呢?我找到了答案
通过在客户端和服务器端使用ObjectSerializationCodeFactory,我可以传递自定义对象和集合
ObjectSerializationCodecFactory oscf = new ObjectSerializationCodecFactory();
oscf.setDecoderMaxObjectSize(1048576);
connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(oscf)