Hmm. I wonder if the 400 you are seeing is from RestEasy attempting to do a request.getRequestDispatcher(String path) call improperly. If you disable RestEasy (temporarily), does the 400 go away?
Joakim Erdfelt / [email protected] On Thu, Aug 13, 2015 at 8:47 AM, X Z <[email protected]> wrote: > I am using embedded jetty, and there is no http proxy. My embedded jetty > server works with RestEasy (3.0.9.Final) to provide restful. > > Thanks > Xuan > > ------------------------------ > *From:* [email protected] <[email protected]> > on behalf of Joakim Erdfelt <[email protected]> > *Sent:* Thursday, August 13, 2015 9:02 AM > > *To:* JETTY user mailing list > *Subject:* Re: [jetty-users] HTTP 400 status code returned after Jetty > server upgraded from 9.0 to 9.2 > > I'll see if I can upgrade my curl to your version (I'm older) > > Are your requests going through an http proxy perchance? > > and/or is your Jetty behind something else? (like apache httpd, haproxy, > nginx, etc ...) > > Also, if you just run the jetty-distribution's demo-base and hit that with > your curl, does it also fail with response code 400? > > > > Joakim Erdfelt / [email protected] > > On Wed, Aug 12, 2015 at 7:52 PM, X Z <[email protected]> wrote: > >> Here is the details of http post request: >> >> >> * Hostname was NOT found in DNS cache >> >> * Trying 127.0.0.1... >> >> * Connected to 127.0.0.1 (127.0.0.1) port 2013 (#0) >> >> > POST /mock/127.0.0.1 HTTP/1.1 >> >> > User-Agent: curl/7.37.1 >> >> > Host: 127.0.0.1:2013 >> >> > Accept: */* >> >> > Content-Type: application/json >> >> > Content-Length: 248 >> >> > >> >> * upload completely sent off: 248 out of 248 bytes >> >> < HTTP/1.1 400 Bad Request >> >> < Content-Length: 0 >> >> < Connection: close >> >> * Server Jetty(9.2.13.v20150730) is not blacklisted >> >> < Server: Jetty(9.2.13.v20150730) >> >> < >> >> * Closing connection 0 >> >> >> Here is the details of http get request: >> >> * Hostname was NOT found in DNS cache >> >> * Trying 127.0.0.1... >> >> * Connected to 127.0.0.1 (127.0.0.1) port 2013 (#0) >> >> > GET /available HTTP/1.1 >> >> > User-Agent: curl/7.37.1 >> >> > Host: 127.0.0.1:2013 >> >> > Accept: */* >> >> > >> >> < HTTP/1.1 400 Bad Request >> >> < Content-Length: 0 >> >> < Connection: close >> >> * Server Jetty(9.2.13.v20150730) is not blacklisted >> >> < Server: Jetty(9.2.13.v20150730) >> >> < >> >> * Closing connection 0 >> >> >> Thanks >> zhong >> ------------------------------ >> *From:* [email protected] <[email protected]> >> on behalf of Joakim Erdfelt <[email protected]> >> *Sent:* Wednesday, August 12, 2015 5:33 PM >> >> *To:* JETTY user mailing list >> *Subject:* Re: [jetty-users] HTTP 400 status code returned after Jetty >> server upgraded from 9.0 to 9.2 >> >> Just mocked this up based on your descriptions. >> >> A Jetty server using Jetty 9.2.13.v20150730 >> A servlet on "/mock/*" that has a doGet() and doPost() enabled. >> Had the implementation of this servlet just respond what it got. >> >> Using curl to access said servlet. >> >> $ curl -vv http://127.0.0.1:2013/mock/127.0.0.1 >> * About to connect() to 127.0.0.1 port 2013 (#0) >> * Trying 127.0.0.1... >> * Adding handle: conn: 0x11588d0 >> * Adding handle: send: 0 >> * Adding handle: recv: 0 >> * Curl_addHandleToPipeline: length: 1 >> * - Conn 0 (0x11588d0) send_pipe: 1, recv_pipe: 0 >> * Connected to 127.0.0.1 (127.0.0.1) port 2013 (#0) >> > GET /mock/127.0.0.1 HTTP/1.1 >> > User-Agent: curl/7.32.0 >> > Host: 127.0.0.1:2013 >> > Accept: */* >> > >> < HTTP/1.1 200 OK >> < Date: Wed, 12 Aug 2015 21:32:07 GMT >> < Content-Type: text/plain; charset=ISO-8859-1 >> < Content-Length: 62 >> * Server Jetty(9.2.13.v20150730) is not blacklisted >> < Server: Jetty(9.2.13.v20150730) >> < >> GET Request received for http://127.0.0.1:2013/mock/127.0.0.1 >> * Connection #0 to host 127.0.0.1 left intact >> $ >> >> $ curl -vv -H "Content-Type: application/json" --data @si.json >> http://127.0.0.1:2013/mock/127.0.0.1 >> * About to connect() to 127.0.0.1 port 2013 (#0) >> * Trying 127.0.0.1... >> * Adding handle: conn: 0x12da920 >> * Adding handle: send: 0 >> * Adding handle: recv: 0 >> * Curl_addHandleToPipeline: length: 1 >> * - Conn 0 (0x12da920) send_pipe: 1, recv_pipe: 0 >> * Connected to 127.0.0.1 (127.0.0.1) port 2013 (#0) >> > POST /mock/127.0.0.1 HTTP/1.1 >> > User-Agent: curl/7.32.0 >> > Host: 127.0.0.1:2013 >> > Accept: */* >> > Content-Type: application/json >> > Content-Length: 1103791 >> > Expect: 100-continue >> > >> < HTTP/1.1 200 OK >> < Date: Wed, 12 Aug 2015 21:32:53 GMT >> < Content-Type: text/plain; charset=ISO-8859-1 >> < Content-Length: 63 >> < Connection: close >> * Server Jetty(9.2.z-SNAPSHOT) is not blacklisted >> < Server: Jetty(9.2.z-SNAPSHOT) >> < >> POST Request received for http://127.0.0.1:2013/mock/127.0.0.1 >> * Closing connection 0 >> >> Can you use "-vv" on your curl line too? >> >> >> Joakim Erdfelt / [email protected] >> >> On Wed, Aug 12, 2015 at 2:06 PM, X Z <[email protected]> wrote: >> >>> curl -H "Content-Type: application/json" --data @si.json >>> http://127.0.0.1:2013/mock/127.0.0.1 >>> >>> I also tried with "wget http://127.0.0.1:2013/available" >>> <http://127.0.0.1:2013/available> which gave me same error code 400. >>> >>> The above HTTP GET/POST worked with Jetty 9.0 server. >>> >>> Thanks >>> zhong >>> >>> >>> ------------------------------ >>> *From:* [email protected] <[email protected]> >>> on behalf of Joakim Erdfelt <[email protected]> >>> *Sent:* Wednesday, August 12, 2015 4:53 PM >>> *To:* JETTY user mailing list >>> *Subject:* Re: [jetty-users] HTTP 400 status code returned after Jetty >>> server upgraded from 9.0 to 9.2 >>> >>> Can you capture the full POST request line and headers? and post it >>> here? >>> Would like to see what you are sending. >>> From the logs, it appears that something with your specific POST request >>> is tripping up the parser. >>> Best guess, you have a header without a key. (a HTTP spec violation) >>> >>> >>> >>> Joakim Erdfelt / [email protected] >>> >>> On Wed, Aug 12, 2015 at 1:08 PM, X Z <[email protected]> wrote: >>> >>>> Hi, >>>> >>>> >>>> I have upgraded the embedded Jetty server from 9.0 to latest 9.2 >>>> version. The HTTP GET/POST requests return 400 code. I also saw this >>>> warning log: >>>> >>>> WARN HttpParser:59 - badMessage: >>>> java.lang.ArrayIndexOutOfBoundsException: 0 for >>>> HttpChannelOverHttp@2e70eea7{r=0,c=false,a=IDLE,uri=-} >>>> >>>> Anyone has got the insight on how to fix the issue? >>>> >>>> >>>> The detailed debugging messages are: >>>> >>>> 015-08-12 15:51:55 DEBUG SelectorManager:89 - Queued change >>>> org.eclipse.jetty.io.SelectorManager$ManagedSelector$Accept@55c4b148 >>>> >>>> 2015-08-12 15:51:55 DEBUG SelectorManager:89 - Selector loop woken up >>>> from select, 0/0 selected >>>> >>>> 2015-08-12 15:51:55 DEBUG SelectorManager:89 - Running change >>>> org.eclipse.jetty.io.SelectorManager$ManagedSelector$Accept@55c4b148 >>>> >>>> 2015-08-12 15:51:55 DEBUG AbstractEndPoint:89 - onOpen >>>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062 >>>> <->2013,Open,in,out,-,-,3/30000,null}{io=0,kio=0,kro=0} >>>> >>>> 2015-08-12 15:51:55 DEBUG IdleTimeout:89 - >>>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062<->2013,Open,in,out,-,-,3/30000,null}{io=0,kio=0,kro=0} >>>> idle timeout check, elapsed: 3 ms, remaining: 29997 ms >>>> >>>> 2015-08-12 15:51:55 DEBUG HttpChannel:89 - new >>>> HttpChannelOverHttp@2e70eea7{r=0,c=false,a=IDLE,uri=-} -> >>>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062 >>>> <->2013,Open,in,out,-,-,29/30000,null}{io=0,kio=0,kro=0},null,HttpChannelState@78442dc2{s=IDLE >>>> i=true a=null} >>>> >>>> 2015-08-12 15:51:55 DEBUG HttpConnection:89 - New HTTP Connection >>>> HttpConnection@45d14aaa{IDLE} >>>> >>>> 2015-08-12 15:51:55 DEBUG AbstractConnection:89 - onOpen >>>> HttpConnection@45d14aaa{IDLE} >>>> >>>> 2015-08-12 15:51:55 DEBUG AbstractConnection:89 - fillInterested >>>> HttpConnection@45d14aaa{IDLE} >>>> >>>> 2015-08-12 15:51:55 DEBUG AbstractConnection:89 - >>>> IDLE-->FILL_INTERESTED HttpConnection@45d14aaa{FILL_INTERESTED} >>>> >>>> 2015-08-12 15:51:55 DEBUG SelectChannelEndPoint:89 - Local interests >>>> updating 0 -> 1 for SelectChannelEndPoint@57f83f44{/127.0.0.1:60062 >>>> <->2013,Open,in,out,R,-,0/30000,HttpConnection}{io=1,kio=0,kro=0} >>>> >>>> 2015-08-12 15:51:55 DEBUG SelectorManager:89 - Queued change >>>> org.eclipse.jetty.io.SelectChannelEndPoint$1@320dce4f >>>> >>>> 2015-08-12 15:51:55 DEBUG SelectorManager:89 - Created >>>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062 >>>> <->2013,Open,in,out,R,-,1/30000,HttpConnection}{io=1,kio=0,kro=0} >>>> >>>> 2015-08-12 15:51:55 DEBUG SelectorManager:89 - Running change >>>> org.eclipse.jetty.io.SelectChannelEndPoint$1@320dce4f >>>> >>>> 2015-08-12 15:51:55 DEBUG SelectChannelEndPoint:89 - Key interests >>>> updated 0 -> 1 on SelectChannelEndPoint@57f83f44{/127.0.0.1:60062 >>>> <->2013,Open,in,out,R,-,2/30000,HttpConnection}{io=1,kio=1,kro=0} >>>> >>>> 2015-08-12 15:51:55 DEBUG SelectorManager:89 - Selector loop waiting on >>>> select >>>> >>>> 2015-08-12 15:51:55 DEBUG SelectorManager:89 - Selector loop woken up >>>> from select, 1/1 selected >>>> >>>> 2015-08-12 15:51:55 DEBUG SelectChannelEndPoint:89 - Key interests >>>> updated 1 -> 0 on SelectChannelEndPoint@57f83f44{/127.0.0.1:60062 >>>> <->2013,Open,in,out,R,-,2/30000,HttpConnection}{io=1,kio=0,kro=1} >>>> >>>> 2015-08-12 15:51:55 DEBUG SelectChannelEndPoint:89 - Local interests >>>> updating 1 -> 0 for SelectChannelEndPoint@57f83f44{/127.0.0.1:60062 >>>> <->2013,Open,in,out,R,-,3/30000,HttpConnection}{io=0,kio=0,kro=1} >>>> >>>> 2015-08-12 15:51:55 DEBUG SelectorManager:89 - Queued change >>>> org.eclipse.jetty.io.SelectChannelEndPoint$1@320dce4f >>>> >>>> 2015-08-12 15:51:55 DEBUG AbstractConnection:89 - >>>> FILL_INTERESTED-->FILLING HttpConnection@45d14aaa{FILLING} >>>> >>>> 2015-08-12 15:51:55 DEBUG SelectorManager:89 - Running change >>>> org.eclipse.jetty.io.SelectChannelEndPoint$1@320dce4f >>>> >>>> 2015-08-12 15:51:55 DEBUG SelectorManager:89 - Selector loop waiting on >>>> select >>>> >>>> 2015-08-12 15:51:55 DEBUG HttpConnection:89 - >>>> HttpConnection@45d14aaa{FILLING} >>>> onFillable HttpChannelState@78442dc2{s=IDLE i=true a=null} >>>> >>>> 2015-08-12 15:51:55 DEBUG ChannelEndPoint:89 - filled 394 >>>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062 >>>> <->2013,Open,in,out,-,-,4/30000,HttpConnection}{io=0,kio=0,kro=1} >>>> >>>> 2015-08-12 15:51:55 DEBUG HttpParser:89 - parseNext s=START >>>> HeapByteBuffer@2c5c9e4a[p=0,l=394,c=8192,r=394]={<<<POST >>>> /mock/127.0....d":"127.0.0.1"}>>>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00} >>>> >>>> 2015-08-12 15:51:55 DEBUG HttpParser:89 - START --> SPACE1 >>>> >>>> 2015-08-12 15:51:55 DEBUG HttpParser:89 - SPACE1 --> URI >>>> >>>> 2015-08-12 15:51:55 DEBUG HttpParser:89 - URI --> SPACE2 >>>> >>>> 2015-08-12 15:51:55 DEBUG HttpParser:89 - SPACE2 --> REQUEST_VERSION >>>> >>>> 2015-08-12 15:51:55 DEBUG HttpParser:89 - REQUEST_VERSION --> HEADER >>>> >>>> 2015-08-12 15:51:55 WARN HttpParser:59 - badMessage: >>>> java.lang.ArrayIndexOutOfBoundsException: 0 for >>>> HttpChannelOverHttp@2e70eea7{r=0,c=false,a=IDLE,uri=-} >>>> >>>> 2015-08-12 15:51:55 DEBUG HttpParser:105 - >>>> >>>> java.lang.ArrayIndexOutOfBoundsException: 0 >>>> >>>> at org.eclipse.jetty.util.ArrayTernaryTrie.getBest( >>>> ArrayTernaryTrie.java:374) >>>> >>>> at org.eclipse.jetty.util.ArrayTernaryTrie.getBest( >>>> ArrayTernaryTrie.java:357) >>>> >>>> at org.eclipse.jetty.http.HttpParser.parseHeaders(HttpParser.java:1047) >>>> >>>> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:1257) >>>> >>>> at org.eclipse.jetty.server.HttpConnection.onFillable( >>>> HttpConnection.java:250) >>>> >>>> at org.eclipse.jetty.io.AbstractConnection$2.run( >>>> AbstractConnection.java:540) >>>> >>>> at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob( >>>> QueuedThreadPool.java:635) >>>> >>>> at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run( >>>> QueuedThreadPool.java:555) >>>> >>>> at java.lang.Thread.run(Thread.java:744) >>>> >>>> 2015-08-12 15:51:55 DEBUG HttpParser:89 - HEADER --> CLOSED >>>> >>>> 2015-08-12 15:51:55 DEBUG HttpChannelState:89 - >>>> HttpChannelState@78442dc2{s=IDLE i=true a=null} handling IDLE >>>> >>>> 2015-08-12 15:51:55 DEBUG HttpConnection:89 - >>>> org.eclipse.jetty.server.HttpConnection$SendCallback@4652a2dd[PROCESSING][i=ResponseInfo{HTTP/1.1 >>>> 400 >>>> null,0,false},cb=org.eclipse.jetty.server.HttpChannel$CommitCallback@5b427f3c] >>>> generate: NEED_HEADER (null,null,true)@START >>>> >>>> 2015-08-12 15:51:55 DEBUG HttpConnection:89 - >>>> org.eclipse.jetty.server.HttpConnection$SendCallback@4652a2dd[PROCESSING][i=ResponseInfo{HTTP/1.1 >>>> 400 >>>> null,0,false},cb=org.eclipse.jetty.server.HttpChannel$CommitCallback@5b427f3c] >>>> generate: FLUSH ([p=0,l=99,c=8192,r=99],null,true)@COMPLETING >>>> >>>> 2015-08-12 15:51:55 DEBUG WriteFlusher:89 - write: >>>> WriteFlusher@5bd3465a{IDLE} >>>> [HeapByteBuffer@4e26e633[p=0,l=99,c=8192,r=99]={<<<HTTP/1.1 400 Bad >>>> ....v20150730)\r\n\r\n>>>\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00}] >>>> >>>> 2015-08-12 15:51:55 DEBUG WriteFlusher:89 - update WriteFlusher@5bd3465a >>>> {WRITING}:IDLE-->WRITING >>>> >>>> 2015-08-12 15:51:55 DEBUG ChannelEndPoint:89 - flushed 99 >>>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062 >>>> <->2013,Open,in,out,-,W,10/30000,HttpConnection}{io=0,kio=0,kro=1} >>>> >>>> 2015-08-12 15:51:55 DEBUG WriteFlusher:89 - update WriteFlusher@5bd3465a >>>> {IDLE}:WRITING-->IDLE >>>> >>>> 2015-08-12 15:51:55 DEBUG HttpConnection:89 - >>>> org.eclipse.jetty.server.HttpConnection$SendCallback@4652a2dd[PROCESSING][i=ResponseInfo{HTTP/1.1 >>>> 400 >>>> null,0,false},cb=org.eclipse.jetty.server.HttpChannel$CommitCallback@5b427f3c] >>>> generate: SHUTDOWN_OUT ([p=99,l=99,c=8192,r=0],null,true)@END >>>> >>>> 2015-08-12 15:51:55 DEBUG HttpConnection:89 - >>>> org.eclipse.jetty.server.HttpConnection$SendCallback@4652a2dd[PROCESSING][i=ResponseInfo{HTTP/1.1 >>>> 400 >>>> null,0,false},cb=org.eclipse.jetty.server.HttpChannel$CommitCallback@5b427f3c] >>>> generate: DONE ([p=99,l=99,c=8192,r=0],null,true)@END >>>> >>>> 2015-08-12 15:51:55 DEBUG ChannelEndPoint:89 - oshut >>>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062 >>>> <->2013,Open,in,out,-,-,1/30000,HttpConnection}{io=0,kio=0,kro=1} >>>> >>>> 2015-08-12 15:51:55 DEBUG HttpChannelState:89 - >>>> HttpChannelState@78442dc2{s=DISPATCHED i=true a=null} unhandle >>>> DISPATCHED >>>> >>>> 2015-08-12 15:51:55 DEBUG ChannelEndPoint:89 - filled -1 >>>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062 >>>> <->2013,Open,in,OSHUT,-,-,1/30000,HttpConnection}{io=0,kio=0,kro=1} >>>> >>>> 2015-08-12 15:51:55 DEBUG ChannelEndPoint:89 - ishut >>>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062 >>>> <->2013,Open,in,OSHUT,-,-,2/30000,HttpConnection}{io=0,kio=0,kro=1} >>>> >>>> 2015-08-12 15:51:55 DEBUG AbstractEndPoint:89 - onClose >>>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062 >>>> <->2013,CLOSED,ISHUT,OSHUT,-,-,2/30000,HttpConnection}{io=0,kio=0,kro=1} >>>> >>>> 2015-08-12 15:51:55 DEBUG ChannelEndPoint:89 - close >>>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062 >>>> <->2013,CLOSED,ISHUT,OSHUT,-,-,3/30000,HttpConnection}{io=0,kio=0,kro=1} >>>> >>>> 2015-08-12 15:51:55 DEBUG SelectorManager:89 - Destroyed >>>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062 >>>> <->2013,CLOSED,ISHUT,OSHUT,-,-,3/30000,HttpConnection}{io=0,kio=-1,kro=-1} >>>> >>>> 2015-08-12 15:51:55 DEBUG AbstractConnection:89 - onClose >>>> HttpConnection@45d14aaa{FILLING} >>>> >>>> 2015-08-12 15:51:55 DEBUG AbstractEndPoint:89 - onClose >>>> SelectChannelEndPoint@57f83f44{/127.0.0.1:60062 >>>> <->2013,CLOSED,ISHUT,OSHUT,-,-,4/30000,HttpConnection}{io=0,kio=-1,kro=-1} >>>> >>>> 2015-08-12 15:51:55 DEBUG HttpParser:89 - atEOF HttpParser{s=CLOSED,0 >>>> of 0} >>>> >>>> 2015-08-12 15:51:55 DEBUG HttpParser:89 - parseNext s=CLOSED >>>> HeapByteBuffer@4e26e633[p=0,l=0,c=8192,r=0]={<<<>>>HTTP/1.1 400 Bad >>>> ...\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00} >>>> >>>> 2015-08-12 15:51:55 DEBUG AbstractConnection:89 - FILLING-->IDLE >>>> HttpConnection@45d14aaa{IDLE} >>>> >>>> _______________________________________________ >>>> jetty-users mailing list >>>> [email protected] >>>> To change your delivery options, retrieve your password, or unsubscribe >>>> from this list, visit >>>> https://dev.eclipse.org/mailman/listinfo/jetty-users >>>> >>> >>> >>> _______________________________________________ >>> jetty-users mailing list >>> [email protected] >>> To change your delivery options, retrieve your password, or unsubscribe >>> from this list, visit >>> https://dev.eclipse.org/mailman/listinfo/jetty-users >>> >> >> >> _______________________________________________ >> jetty-users mailing list >> [email protected] >> To change your delivery options, retrieve your password, or unsubscribe >> from this list, visit >> https://dev.eclipse.org/mailman/listinfo/jetty-users >> > > > _______________________________________________ > jetty-users mailing list > [email protected] > To change your delivery options, retrieve your password, or unsubscribe > from this list, visit > https://dev.eclipse.org/mailman/listinfo/jetty-users >
_______________________________________________ jetty-users mailing list [email protected] To change your delivery options, retrieve your password, or unsubscribe from this list, visit https://dev.eclipse.org/mailman/listinfo/jetty-users
