[undertow-dev] UT000005: getRequestChannel() has already been called

paroczizs . paroczizs at gmail.com
Wed Sep 21 04:10:21 EDT 2016


Hi,



we are implementing a proxy solution based on Wildfly/Undertow.



There are a couple of custom handler configured in a row. Two of the
handlers are deal with the incoming request – message validator and message
log.



The message validator use the solution form this class to read the incoming
request:



core/src/main/java/io/undertow/server/handlers/RequestBufferingHandler.java



The message log based on conduits and logs on the exchange complete event.



It works almost perfectly however the first request fails with this when
the log handler registers the conduit:



2016-09-21 10:05:02,034 INFO  [hu.telekom.lwi.plugin.log.LwiLogHandler]
(default task-1) [lwiId-lpx1474445101966] LwiLogHandler > start
request/response log handling (FULL)...

2016-09-21 10:05:02,039 ERROR [io.undertow.request] (default task-1)
UT005071: Undertow request failed HttpServerExchange{ POST
/lwi/cnr/getMsisdn request {X-MT-UserId=[pzs], SOAPAction=[""],
X-MT-CorrelationId=[123], Accept-Encoding=[gzip,deflate],
X-Lwi-RequestId=[lwiId-lpx1474445101966],
User-Agent=[Apache-HttpClient/4.1.1 (java 1.5)],
X-SSL-Client-CN=[lwitester1], X-MT-RequestId=[12345],
Content-Type=[text/xml;charset=UTF-8], Content-Length=[798],
Host=[localhost:444]} response {}}: java.lang.IllegalStateException:
UT000005: getRequestChannel() has already been called

       at
io.undertow.server.HttpServerExchange.addRequestWrapper(HttpServerExchange.java:1406)

       at
hu.telekom.lwi.plugin.log.LwiConduitWrapper.applyConduits(LwiConduitWrapper.java:50)

       at
hu.telekom.lwi.plugin.log.LwiLogHandler.handleRequest(LwiLogHandler.java:38)

       at
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)

       at
hu.telekom.lwi.plugin.validation.ValidationHandler.handleRequest(ValidationHandler.java:78)

       at
io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)

       at
io.undertow.security.handlers.AuthenticationCallHandler.handleRequest(AuthenticationCallHandler.java:52)

       at
io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)

       at
io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:805)

       at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

       at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

       at java.lang.Thread.run(Thread.java:745)





After the first call everything work perfectly there is no error, however
it is true that the exchange.getRequestChannel() was called in the message
validation handler.



Is it any work around for this?



Regards, Zsolt
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/undertow-dev/attachments/20160921/dc9053aa/attachment.html 


More information about the undertow-dev mailing list