Results 66 comments of ZHANG Dapeng

@stuartwdouglas The [StackOverflow](https://stackoverflow.com/questions/51524769/undertow-never-sends-http-2-trailers-for-plain-servlet) question has provided a simple servlet, I couldn't even make that work. I might have missed some configuration. If you can successfully run that servlet and _verify...

Thanks a lot @stuartwdouglas , I will test on it once it's released. Right now it is not straight forward to run the InteropTest for this PR, I'm trying to...

@sbordet I tried Jetty 9.4.11, it did not work ``` java.lang.NoSuchMethodError: javax.servlet.http.HttpServletResponse.setTrailerFields ``` It seems it does not support servlet 4.0. Actually its release note didn't claim it supports servlet...

> There's a lot here, and much of it has obvious things that need to be cleaned up before a real review. What did you want me to look at...

Added InteropTest and TransportTest with embedded Undertow servlet container. Rebased. @ejona86 PTAL

@ehallander9591 Thank you for following the progress. I'll still working on it. Will send out updated PR in a week or so.

@creamsoup Would you like to be a second reviewer, on AbstractStream part at least?

@creamsoup * `WriteListener#onWritePossible` just calls the `doWrite` (similar to `SynchronizedContext#drain`). * any writes in `Sink` (header, data frame, trailers etc) need to be queued (`SynchronizedContext#executeLater`). after queue the write, it...

@ejona86 Current write path implementation is so difficult to see the correctness. Will test out using a lock for the write path. Will update the PR if it works for...

Inspired by @creamsoup , I found a simple and clean solution, reusing `SerializingExecutor` or `SynchronizationContext`, without lock, without other AtomicReference: ```java Executor wirteExecutor = new SerializingExecutor(directExecutor());// SyncCtx also works boolean...