System.out.println en inicializador estático al parecer la salida de dos veces

Kohei Tamura:

En mi aplicación implementada en Tomcat, hay una clase de la siguiente manera:

import java.util.logging.Level;
import java.util.logging.Logger;

public abstract class ServiceEndpointApplication extends Application {

    final static String LOGGER_NAME = "test";

    static {
        System.out.println("static init start");
        Logger logger = Logger.getLogger(LOGGER_NAME);
        logger.setLevel(Level.OFF);
        System.out.println("static init end");
    }
    ...
}

Justo después de arrancar Tomcat, envío 50 reqests utilizando JMeter (50 hilos, 1 período de aceleración, 1 de bucle).

Luego tail -f catalina.outmuestra los siguientes registros:

Nov 06, 2018 1:36:57 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 64126 ms
static init start
static init end
static init end

static init end se muestra dos veces!

Este comportamiento ocurre en una probabilidad de aproximadamente el 10%.

Mi pregunta :

¿Cuáles son las posibles razones de este comportamiento extraño?

Medio Ambiente :

  • Java

    • java version "1.7.0_80"
    • Java (TM) SE Runtime Environment (build 1.7.0_80-b15)
    • Java HotSpot (TM) de 64 bits del servidor VM (build 24.80-b11, modo mixto)
  • Tomcat 7.0.59

Kohei Tamura:

Descubrí el motivo. Esto es causado por -fla opción de tailcomando.

I reproducido este comportamiento:

$ tail -f catalina.out
  ...
Nov 06, 2018 7:18:17 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 62601 ms
static init start
static init end
static init end

Y entonces me encontré tailsin ninguna opción:

$ tail catalina.out 
  ...
Nov 06, 2018 7:18:17 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 62601 ms
static init start
static init end

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=218293&siteId=1
Recomendado
Clasificación