Обработчик Netty не является инстанциатором для каждого вызова

#java #netty

#java #netty

Вопрос:

У меня проблема с реализацией new Handler(). У меня есть член класса в обработчике, который инициализируется случайным UUID. Когда я смотрю на данные, есть несколько запросов с одним и тем же UUID.

 public class HttpServerInitializer extends ChannelInitializer<SocketChannel> {
   @Override
   public void initChannel(SocketChannel ch) throws Exception {
       .....
       p.addLast("httprequest", new HttpServerHandler(config));
   }
}
  

HttpServerHandler

 private String uuid;

public HttpServerHandler(final StaticConfig staticConfig) {

    this.uuid = UUID.randomUUID().toString();

}
  

Этот uuid не уникален для каждого вызова.

Вместо этого, если я добавлю random_uuid в attr , он будет работать нормально.

Итак, у меня есть способ исправить это. Проблема в том, что это противоречит моему пониманию того, как создаются обработчики.

Ответ №1:

initChannel(...) вызывается для каждого нового соединения. Поэтому, если вы отправляете несколько запросов по одному и тому же соединению, вы увидите это один раз