Вопрос
Есть ли способ сохранить состояние на канале. Я пишу сервер чата и хочу сохранить информацию о пользователе, которому принадлежит канал. Я думал, что, может быть, канал предоставит метод хранения пользовательского объекта, но я не вижу его. Есть ли способ сделать это без необходимости что -то вроде карты?
Решение
1) Вы можете установить информацию о состоянии в Channelhandlercontext, как ниже, и использовать ее позже.
channelHandlerContext.setAttachment(yourObj);
Object yourObj2 = channelHandlerContext.getAttachment();
2) Создайте там канал локальный и хранилище информации там (канал Local похож на локальный поток для конкретного канала)
import org.jboss.netty.channel.ChannelLocal;
import java.util.Map;
public class UserInfoHolder {
public final static ChannelLocal<Map<String, String>> USER_INFO = new ChannelLocal<Map<String, String>>();
}
//if you have the channel reference, you can store and retrieve information like this
Map<String,String> userMap = ....
//store
UserInfoHolder.USER_INFO.set(channel, userMap);
//retrive
Map<String,String> userMap2 = UserInfoHolder.USER_INFO.get(channel);
Не связан с StackOverflow