таинственный консольный вывод на stderr с пристани? - PullRequest
1 голос
/ 15 сентября 2010

При запуске встроенного модуля запуска веб-приложений Jetty я вижу следующий вывод в stderr.Я только начал видеть это после перемещения моей сборки в Maven-2.Кто-нибудь видел это раньше?

IDLE SCEP@988057 [d=false,io=1,w=true,rb=false,wb=false],NOT_HANDSHAKING, in/out=0/0 Status = OK HandshakeStatus = NOT_HANDSHAKING
bytesConsumed = 5469 bytesProduced = 5509

Это иногда повторяется, казалось бы, в случайные моменты времени.

1 Ответ

2 голосов
/ 23 сентября 2010

Похоже, что это происходит из-за поддержки NIO для Jetty. Похоже, что Jetty считает, что необходимо выполнить вход в stderr, когда он закрывает незанятые соединения..err с фиктивным выходным потоком:

public class DebugOutputStream extends OutputStream {
    private Logger s_logger = LoggerFactory.getLogger(DebugOutputStream.class);

    private final OutputStream m_realStream;
    private ByteArrayOutputStream baos = new ByteArrayOutputStream();
    private Pattern m_searchFor;

    public DebugOutputStream(OutputStream realStream, String regex) {
        m_realStream = realStream;
        m_searchFor = Pattern.compile(regex);
    }

    public void write(int b) throws IOException {
        baos.write(b);
        if (m_searchFor.matcher(baos.toString()).matches()) {
            s_logger.info("unwanted output detected", new RuntimeException());
        }
        if (b == '\n') baos.reset();
        m_realStream.write(b);
    }
}
...