那mina中的一个例子为例:
@Override
public void filterWrite(NextFilter nextFilter, IoSession session,
WriteRequest writeRequest) throws Exception {
Object data = writeRequest.getMessage();
if (data instanceof IoBuffer) {
write(session, (IoBuffer) data);
} else {
throw new IllegalArgumentException(
"This filter should only buffer IoBuffer objects");
}
// 按照的平时的方案。
// try {
// IoBuffer data = (IoBuffer) writeRequest.getMessage();
// write(session, data);
// } catch (ClassCastException e) {
// throw new IllegalArgumentException(
// "This filter should only buffer IoBuffer objects");
// }
}
private void write(IoSession session, IoBuffer data) {
IoBuffer dest = buffersMap.putIfAbsent(session,
new IoBufferLazyInitializer(bufferSize));
write(session, data, dest);
}
更多。参见参见http://www.blogjava.net/stone2083/archive/2010/07/09/325649.html