java - Jetty 将 HTTP 重定向到 HTTPS 在 IDE 外部失败

标签 java ssl netbeans jetty-9

我使用以下代码将 HTTP 重定向到 HTTPS,它在 Netbeans 上运行时运行良好,但在 IDE 之外失败。我做错了什么?求助,我使用 Jetty 版本 9.3.19.v20170502。

  ContextHandlerCollection contexts = new ContextHandlerCollection();
    WebAppContext webAppContext = new AppContext().buildWebAppContext();

    // this configures jetty to require HTTPS for all requests
    Constraint constraint = new Constraint();
    constraint.setDataConstraint(Constraint.DC_CONFIDENTIAL);
    ConstraintMapping mapping = new ConstraintMapping();
    mapping.setPathSpec("/*");
    mapping.setConstraint(constraint);
    ConstraintSecurityHandler securityHandler = new ConstraintSecurityHandler();

    securityHandler.setConstraintMappings(Collections.singletonList(mapping));
    securityHandler.setHandler(webAppContext);

    contexts.setHandlers(new Handler[]{securityHandler, contextHandler});

    jettyServer.setHandler(contexts);

我在 nbactions.xml 上使用它在 Netbeans 上运行项目。

<properties>
        <exec.args>-Xms1024m -Xmx1024m -Xbootclasspath/p:C:/Users/Hope/.m2/repository/org/mortbay/jetty/alpn/alpn-boot/${alpn-boot-version}/alpn-boot-${alpn-boot-version}.jar -classpath %classpath ${packageClassName}</exec.args>
        <exec.executable>java</exec.executable>
       <exec.classpathScope>${classPathScope}</exec.classpathScope>
</properties>

在 Netbeans 外部运行项目,在 cmd 上,使用这个等效命令。

cd path/to/warfile
java -Xms1024m -Xmx1024m -Xbootclasspath/p:C:/Users/Hope/.m2/repository/org/mortbay/jetty/alpn/alpn-boot/8.1.11.v20170118/alpn-boot-8.1.11.v20170118.jar  -version:"1.8.0_121" -jar project.war

这是我的 sslContextFactory。

SslContextFactory sslContextFactory = new SslContextFactory();
    sslContextFactory.setKeyStorePath(keyStorePath);
    sslContextFactory.setKeyStorePassword(PASS);
    sslContextFactory.setKeyManagerPassword(PASS);
    sslContextFactory.setProtocol("TLSv1.2");
    sslContextFactory.setCipherComparator(HTTP2Cipher.COMPARATOR);
    sslContextFactory.setUseCipherSuitesOrder(true);

但是我遇到了这个异常:

[DEBUG] 2017-05-11 21:23:19.417 [qtp2114444063-24] HttpChannel - COMMIT for /public/index.xhtml on ServerHttpChannelOverHTTP2@30546632{r=1,c=true,a=DISPATCHED,uri=https://www.sub.example.com:8443/public/index.xhtml}#13
200 null HTTP/2.0
Server: Jetty(9.3.z-SNAPSHOT)
Date: Thu, 11 May 2017 20:23:15 GMT
Set-Cookie: JSESSIONID=16vseavvyqxc01s7h9z9gr6et6;Path=/;Secure
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: text/html;charset=utf-8


[DEBUG] 2017-05-11 21:23:19.420 [qtp2114444063-24] HttpChannelOverHTTP2 -
HTTP2 Commit Response #13/774690f9:
HTTP/2.0 200 null
Server: Jetty(9.3.z-SNAPSHOT)
Date: Thu, 11 May 2017 20:23:15 GMT
Set-Cookie: JSESSIONID=16vseavvyqxc01s7h9z9gr6et6;Path=/;Secure
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: text/html;charset=utf-8


[DEBUG] 2017-05-11 21:23:19.424 [qtp2114444063-24] HttpTransportOverHTTP2 - HTTP2 Response #13:
HTTP/2.0 200
Server: Jetty(9.3.z-SNAPSHOT)
Date: Thu, 11 May 2017 20:23:15 GMT
Set-Cookie: JSESSIONID=16vseavvyqxc01s7h9z9gr6et6;Path=/;Secure
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: text/html;charset=utf-8


[DEBUG] 2017-05-11 21:23:19.430 [qtp2114444063-24] HTTP2Session - Sending HeadersFrame@7cb476e2#13{end=false}
[DEBUG] 2017-05-11 21:23:19.431 [qtp2114444063-24] HTTP2Flusher - Appended HeadersFrame@7cb476e2#13{end=false}, frames=1
[DEBUG] 2017-05-11 21:23:19.432 [qtp2114444063-24] HTTP2Flusher - Flushing HTTP2ServerSession@774690f9{l:/192.168.0.3:8443 <-> r:/192.168.0.3:52103,queueSize=1,sendWindow=12582912,recvWindow=65535,streams=1,NOT_CLOSED}
[DEBUG] 2017-05-11 21:23:19.433 [qtp2114444063-24] HTTP2Flusher - Gathered for write HeadersFrame@7cb476e2#13{end=false}
[DEBUG] 2017-05-11 21:23:19.435 [qtp2114444063-24] HpackEncoder - CtxTbl[18913dbf] encoding
[DEBUG] 2017-05-11 21:23:19.437 [qtp2114444063-24] HpackEncoder - encode IdxFieldS1:':status: 200' to '88'
[DEBUG] 2017-05-11 21:23:19.439 [qtp2114444063-24] HTTP2Session - Failure generating frame HeadersFrame@7cb476e2#13{end=false}
java.lang.ArrayIndexOutOfBoundsException: 1
    at org.eclipse.jetty.http.PreEncodedHttpField.putTo(PreEncodedHttpField.java:119) ~[project.war:1.0-SNAPSHOT]

  at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:202) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:74) [project.war:1.0-SNAPSHOT]
    at org.ocpsoft.rewrite.servlet.impl.HttpRewriteResultHandler.handleResult(HttpRewriteResultHandler.java:41) [rewrite-servlet-2.0.12.Final.jar:2.0.12.Final]
    at org.ocpsoft.rewrite.servlet.RewriteFilter.rewrite(RewriteFilter.java:268) [rewrite-servlet-2.0.12.Final.jar:2.0.12.Final]
    at org.ocpsoft.rewrite.servlet.RewriteFilter.doFilter(RewriteFilter.java:188) [rewrite-servlet-2.0.12.Final.jar:2.0.12.Final]
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) [project.war:1.0-SNAPSHOT]
    at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.Server.handle(Server.java:534) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.HttpChannel.run(HttpChannel.java:267) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589) [project.war:1.0-SNAPSHOT]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_121]
[DEBUG] 2017-05-11 21:23:19.476 [qtp2114444063-24] HTTP2Flusher - Failing, active/queued=1/0
[DEBUG] 2017-05-11 21:23:19.478 [qtp2114444063-24] HTTP2Session - Removed remote HTTP2Stream@5c4616b8#13{sendWindow=12582912,recvWindow=65535,reset=false,CLOSED}
[DEBUG] 2017-05-11 21:23:19.479 [qtp2114444063-24] HttpTransportOverHTTP2 - HTTP2 Response #13 failed to commit
java.lang.ArrayIndexOutOfBoundsException: 1
    at org.eclipse.jetty.http.PreEncodedHttpField.putTo(PreEncodedHttpField.java:119) ~[project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.hpack.HpackEncoder.encode(HpackEncoder.java:289) ~[project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.hpack.HpackEncoder.encode(HpackEncoder.java:179) ~[project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.generator.HeadersGenerator.generateHeaders(HeadersGenerator.java:72) ~[project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.generator.HeadersGenerator.generate(HeadersGenerator.java:56) ~[project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.generator.Generator.control(Generator.java:80) ~[project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.HTTP2Session$ControlEntry.generate(HTTP2Session.java:1122) ~[project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.HTTP2Flusher.process(HTTP2Flusher.java:232) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:241) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:224) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.HTTP2Session.frame(HTTP2Session.java:668) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.HTTP2Session.frames(HTTP2Session.java:640) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.HTTP2Stream.headers(HTTP2Stream.java:87) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.server.HttpTransportOverHTTP2.commit(HttpTransportOverHTTP2.java:184) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.server.HttpTransportOverHTTP2.send(HttpTransportOverHTTP2.java:111) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.HttpChannel.sendResponse(HttpChannel.java:732) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.HttpChannel.write(HttpChannel.java:788) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:235) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:219) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.HttpOutput.close(HttpOutput.java:269) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.HttpWriter.close(HttpWriter.java:49) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.ResponseWriter.close(ResponseWriter.java:163) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.Dispatcher.commitResponse(Dispatcher.java:259) [project.war:1.0-SNAPSHOT]

    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.Server.handle(Server.java:534) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.HttpChannel.run(HttpChannel.java:267) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589) [project.war:1.0-SNAPSHOT]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_121]
[DEBUG] 2017-05-11 21:23:19.506 [qtp2114444063-24] HttpChannel - Commit failed
java.lang.ArrayIndexOutOfBoundsException: 1
    at org.eclipse.jetty.http.PreEncodedHttpField.putTo(PreEncodedHttpField.java:119) ~[project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.hpack.HpackEncoder.encode(HpackEncoder.java:289) ~[project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.hpack.HpackEncoder.encode(HpackEncoder.java:179) ~[project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.generator.HeadersGenerator.generateHeaders(HeadersGenerator.java:72) ~[project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.generator.HeadersGenerator.generate(HeadersGenerator.java:56) ~[project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.generator.Generator.control(Generator.java:80) ~[project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.HTTP2Session$ControlEntry.generate(HTTP2Session.java:1122) ~[project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.HTTP2Flusher.process(HTTP2Flusher.java:232) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:241) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:224) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.HTTP2Session.frame(HTTP2Session.java:668) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.HTTP2Session.frames(HTTP2Session.java:640) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.HTTP2Stream.headers(HTTP2Stream.java:87) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.server.HttpTransportOverHTTP2.commit(HttpTransportOverHTTP2.java:184) [project.war:1.0-SNAPSHOT]

    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589) [project.war:1.0-SNAPSHOT]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_121]
[DEBUG] 2017-05-11 21:23:19.540 [qtp2114444063-24] HttpTransportOverHTTP2 - HTTP2 Response #13 aborted
[DEBUG] 2017-05-11 21:23:19.542 [qtp2114444063-24] HTTP2Session - Sending ResetFrame@2542701b#13{internal_error}
[DEBUG] 2017-05-11 21:23:19.543 [qtp2114444063-24] HTTP2Connection - Processing failure on HTTP2ServerSession@774690f9{l:/192.168.0.3:8443 <-> r:/192.168.0.3:52103,queueSize=0,sendWindow=12582912,recvWindow=65535,streams=0,NOT_CLOSED}: java.lang.ArrayIndexOutOfBoundsException: 1
[DEBUG] 2017-05-11 21:23:19.544 [qtp2114444063-24] HTTP2Flusher - Terminated
[DEBUG] 2017-05-11 21:23:19.544 [qtp2114444063-24] HTTP2Session - Disconnecting HTTP2ServerSession@774690f9{l:/192.168.0.3:8443 <-> r:/192.168.0.3:52103,queueSize=0,sendWindow=12582912,recvWindow=65535,streams=0,CLOSED}
[DEBUG] 2017-05-11 21:23:19.545 [qtp2114444063-24] SslConnection - shutdownOutput: oshut=false, ishut=false SslConnection@4811bc2d{NOT_HANDSHAKING,eio=-1/-1,di=-1} -> HTTP2ServerConnection@36ae36d5[DecryptedEndPoint@33608c07{/192.168.0.3:52103<->8443,Open,in,out,FI,-,3993/2000000,HTTP2ServerConnection@36ae36d5}->SelectChannelEndPoint@4dd57ced{/192.168.0.3:52103<->8443,Open,in,out,FI,-,3991/2000000,SslConnection@4811bc2d}{io=1/1,kio=1,kro=1}]
[DEBUG] 2017-05-11 21:23:19.548 [qtp2114444063-24] SslConnection - flush b[0]= SslConnection@4811bc2d{NEED_WRAP,eio=-1/-1,di=-1} -> HTTP2ServerConnection@36ae36d5[DecryptedEndPoint@33608c07{/192.168.0.3:52103<->8443,Open,in,out,FI,-,3995/2000000,HTTP2ServerConnection@36ae36d5}->SelectChannelEndPoint@4dd57ced{/192.168.0.3:52103<->8443,Open,in,out,FI,-,3994/2000000,SslConnection@4811bc2d}{io=1/1,kio=1,kro=1}]
[DEBUG] 2017-05-11 21:23:19.550 [qtp2114444063-24] SslConnection - wrap Status = CLOSED HandshakeStatus = NEED_UNWRAP bytesConsumed = 0 bytesProduced = 31 SslConnection@4811bc2d{NEED_UNWRAP,eio=-1/31,di=-1} -> HTTP2ServerConnection@36ae36d5[DecryptedEndPoint@33608c07{/192.168.0.3:52103<->8443,Open,in,OSHUT,FI,-,3998/2000000,HTTP2ServerConnection@36ae36d5}->SelectChannelEndPoint@4dd57ced{/192.168.0.3:52103<->8443,Open,in,out,FI,-,3996/2000000,SslConnection@4811bc2d}{io=1/1,kio=1,kro=1}]
[DEBUG] 2017-05-11 21:23:19.552 [qtp2114444063-24] ChannelEndPoint - flushed 31 SelectChannelEndPoint@4dd57ced{/192.168.0.3:52103<->8443,Open,in,out,FI,-,3998/2000000,SslConnection@4811bc2d}{io=1/1,kio=1,kro=1}
[DEBUG] 2017-05-11 21:23:19.554 [qtp2114444063-27] ManagedSelector - Selector loop woken up from select, 1/1 selected
[DEBUG] 2017-05-11 21:23:19.569 [qtp2114444063-27] SelectChannelEndPoint - onSelected 1->0 r=true w=false for SelectChannelEndPoint@4dd57ced{/192.168.0.3:52103<->8443,Open,in,out,FI,-,4015/2000000,SslConnection@4811bc2d}{io=1/0,kio=1,kro=1}
[DEBUG] 2017-05-11 21:23:19.571 [qtp2114444063-27] SelectChannelEndPoint - Direct readable run SelectChannelEndPoint@4dd57ced{/192.168.0.3:52103<->8443,Open,in,out,FI,-,4017/2000000,SslConnection@4811bc2d}{io=1/0,kio=1,kro=1}
[DEBUG] 2017-05-11 21:23:19.573 [qtp2114444063-27] FillInterest - FillInterest@578f792c{true,SSLC.NBReadCB@4811bc2d{SslConnection@4811bc2d{NEED_UNWRAP,eio=-1/0,di=-1} -> HTTP2ServerConnection@36ae36d5[DecryptedEndPoint@33608c07{/192.168.0.3:52103<->8443,Open,in,OSHUT,FI,-,4020/2000000,HTTP2ServerConnection@36ae36d5}->SelectChannelEndPoint@4dd57ced{/192.168.0.3:52103<->8443,Open,in,out,FI,-,4018/2000000,SslConnection@4811bc2d}{io=1/0,kio=1,kro=1}]}} fillable SSLC.NBReadCB@4811bc2d{SslConnection@4811bc2d{NEED_UNWRAP,eio=-1/0,di=-1} -> HTTP2ServerConnection@36ae36d5[DecryptedEndPoint@33608c07{/192.168.0.3:52103<->8443,Open,in,OSHUT,FI,-,4020/2000000,HTTP2ServerConnection@36ae36d5}->SelectChannelEndPoint@4dd57ced{/192.168.0.3:52103<->8443,Open,in,out,FI,-,4019/2000000,SslConnection@4811bc2d}{io=1/0,kio=1,kro=1}]}
[DEBUG] 2017-05-11 21:23:19.577 [qtp2114444063-24] ChannelEndPoint - oshut SelectChannelEndPoint@4dd57ced{/192.168.0.3:52103<->8443,Open,in,out,-,-,0/2000000,SslConnection@4811bc2d}{io=1/0,kio=1,kro=1}
[DEBUG] 2017-05-11 21:23:19.577 [qtp2114444063-27] SslConnection - onFillable enter DecryptedEndPoint@33608c07{/192.168.0.3:52103<->8443,Open,in,OSHUT,FI,-,4025/2000000,HTTP2ServerConnection@36ae36d5}->SelectChannelEndPoint@4dd57ced{/192.168.0.3:52103<->8443,Open,in,out,-,-,0/2000000,SslConnection@4811bc2d}{io=1/0,kio=1,kro=1}
[DEBUG] 2017-05-11 21:23:19.580 [qtp2114444063-27] FillInterest - FillInterest@123a5f92{true,org.eclipse.jetty.http2.HTTP2Connection$FillCallback@35370707} fillable org.eclipse.jetty.http2.HTTP2Connection$FillCallback@35370707
[DEBUG] 2017-05-11 21:23:19.585 [qtp2114444063-27] HTTP2Connection - HTTP2 onFillable HTTP2ServerConnection@36ae36d5[DecryptedEndPoint@33608c07{/192.168.0.3:52103<->8443,Open,in,OSHUT,-,-,4032/2000000,HTTP2ServerConnection@36ae36d5}->SelectChannelEndPoint@4dd57ced{/192.168.0.3:52103<->8443,Open,in,out,-,-,7/2000000,SslConnection@4811bc2d}{io=1/0,kio=1,kro=1}]
[DEBUG] 2017-05-11 21:23:19.594 [qtp2114444063-27] HTTP2Connection - Dequeued task null
[DEBUG] 2017-05-11 21:23:19.596 [qtp2114444063-27] ChannelEndPoint - filled 46 SelectChannelEndPoint@4dd57ced{/192.168.0.3:52103<->8443,Open,in,OSHUT,FI,-,0/2000000,SslConnection@4811bc2d}{io=1/0,kio=1,kro=1}
[DEBUG] 2017-05-11 21:23:19.598 [qtp2114444063-27] SslConnection - net=46 unwrap Status = OK HandshakeStatus = NEED_UNWRAP bytesConsumed = 46 bytesProduced = 17 SslConnection@4811bc2d{NEED_UNWRAP,eio=0/-1,di=17} -> HTTP2ServerConnection@36ae36d5[DecryptedEndPoint@33608c07{/192.168.0.3:52103<->8443,Open,in,OSHUT,-,-,4046/2000000,HTTP2ServerConnection@36ae36d5}->SelectChannelEndPoint@4dd57ced{/192.168.0.3:52103<->8443,Open,in,OSHUT,FI,-,0/2000000,SslConnection@4811bc2d}{io=1/0,kio=1,kro=1}]
[DEBUG] 2017-05-11 21:23:19.596 [qtp2114444063-24] FillInterest - FillInterest@578f792c{true,AC.ReadCB@4811bc2d{SslConnection@4811bc2d{NEED_UNWRAP,eio=17362/-1,di=0} -> HTTP2ServerConnection@36ae36d5[DecryptedEndPoint@33608c07{/192.168.0.3:52103<->8443,Open,in,OSHUT,-,-,4043/2000000,HTTP2ServerConnection@36ae36d5}->SelectChannelEndPoint@4dd57ced{/192.168.0.3:52103<->8443,Open,in,OSHUT,FI,-,1/2000000,SslConnection@4811bc2d}{io=1/0,kio=1,kro=1}]}} register AC.ReadCB@4811bc2d{SslConnection@4811bc2d{NEED_UNWRAP,eio=17362/-1,di=0} -> HTTP2ServerConnection@36ae36d5[DecryptedEndPoint@33608c07{/192.168.0.3:52103<->8443,Open,in,OSHUT,-,-,4044/2000000,HTTP2ServerConnection@36ae36d5}->SelectChannelEndPoint@4dd57ced{/192.168.0.3:52103<->8443,Open,in,OSHUT,FI,-,1/2000000,SslConnection@4811bc2d}{io=1/0,kio=1,kro=1}]}
[DEBUG] 2017-05-11 21:23:19.601 [qtp2114444063-27] SslConnection - filled b[0]= SslConnection@4811bc2d{NEED_UNWRAP,eio=0/-1,di=17} -> HTTP2ServerConnection@36ae36d5[DecryptedEndPoint@33608c07{/192.168.0.3:52103<->8443,Open,in,OSHUT,-,-,4049/2000000,HTTP2ServerConnection@36ae36d5}->SelectChannelEndPoint@4dd57ced{/192.168.0.3:52103<->8443,Open,in,OSHUT,FI,-,3/2000000,SslConnection@4811bc2d}{io=1/0,kio=1,kro=1}]
[DEBUG] 2017-05-11 21:23:19.608 [qtp2114444063-27] HTTP2Connection - Filled 17 bytes
[DEBUG] 2017-05-11 21:23:19.609 [qtp2114444063-24] SelectChannelEndPoint - changeInterests p=true 0->1 for SelectChannelEndPoint@4dd57ced{/192.168.0.3:52103<->8443,Open,in,OSHUT,FI,-,11/2000000,SslConnection@4811bc2d}{io=1/1,kio=1,kro=1}
[DEBUG] 2017-05-11 21:23:19.611 [qtp2114444063-27] ServerParser - Parsing java.nio.HeapByteBuffer[pos=0 lim=17 cap=8192]
[DEBUG] 2017-05-11 21:23:19.613 [qtp2114444063-24] WriteFlusher - ignored: WriteFlusher@19660642{IDLE} java.nio.channels.ClosedChannelException
[DEBUG] 2017-05-11 21:23:19.614 [qtp2114444063-27] Parser - Parsed GO_AWAY frame header from java.nio.HeapByteBuffer[pos=9 lim=17 cap=8192]
[DEBUG] 2017-05-11 21:23:19.615 [qtp2114444063-24] ChannelEndPoint - close SelectChannelEndPoint@4dd57ced{/192.168.0.3:52103<->8443,CLOSED,in,OSHUT,-,-,17/2000000,SslConnection@4811bc2d}{io=1/1,kio=1,kro=1}
[DEBUG] 2017-05-11 21:23:19.616 [qtp2114444063-27] HTTP2Session - Received GoAwayFrame@2feeab64,0/NO_ERROR/
[DEBUG] 2017-05-11 21:23:19.618 [qtp2114444063-27] HTTP2Session - Ignored GoAwayFrame@2feeab64,0/NO_ERROR/, already closed
[DEBUG] 2017-05-11 21:23:19.618 [qtp2114444063-24] ManagedSelector - Queued change org.eclipse.jetty.io.ManagedSelector$2@aee6275 on org.eclipse.jetty.io.ManagedSelector@bd35a0c id=0 keys=1 selected=1
[DEBUG] 2017-05-11 21:23:19.618 [qtp2114444063-27] Parser - Parsed GO_AWAY frame body from java.nio.HeapByteBuffer[pos=17 lim=17 cap=8192]
[DEBUG] 2017-05-11 21:23:19.619 [qtp2114444063-24] WriteFlusher - ignored: WriteFlusher@1138af6d{IDLE} java.nio.channels.ClosedChannelException
[DEBUG] 2017-05-11 21:23:19.619 [qtp2114444063-27] HTTP2Connection - Dequeued new task null
[DEBUG] 2017-05-11 21:23:19.621 [qtp2114444063-27] SslConnection - net=-1 unwrap Status = BUFFER_UNDERFLOW HandshakeStatus = NEED_UNWRAP bytesConsumed = 0 bytesProduced = 0 SslConnection@4811bc2d{NEED_UNWRAP,eio=0/-1,di=0} -> HTTP2ServerConnection@36ae36d5[DecryptedEndPoint@33608c07{/192.168.0.3:52103<->8443,CLOSED,in,OSHUT,-,-,4069/2000000,HTTP2ServerConnection@36ae36d5}->SelectChannelEndPoint@4dd57ced{/192.168.0.3:52103<->8443,CLOSED,ISHUT,OSHUT,-,-,23/2000000,SslConnection@4811bc2d}{io=1/1,kio=-1,kro=-1}]
[DEBUG] 2017-05-11 21:23:19.620 [qtp2114444063-24] HttpOutput -
java.lang.ArrayIndexOutOfBoundsException: 1
    at org.eclipse.jetty.http.PreEncodedHttpField.putTo(PreEncodedHttpField.java:119) ~[project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.hpack.HpackEncoder.encode(HpackEncoder.java:289) ~[project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.hpack.HpackEncoder.encode(HpackEncoder.java:179) ~[project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.generator.HeadersGenerator.generateHeaders(HeadersGenerator.java:72) ~[project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.generator.HeadersGenerator.generate(HeadersGenerator.java:56) ~[project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.http2.generator.Generator.control(Generator.java:80) ~[project.war:1.0-SNAPSHOT]


    at org.eclipse.jetty.server.HttpChannel.write(HttpChannel.java:788) ~[project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:235) ~[project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:219) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.HttpOutput.close(HttpOutput.java:269) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.HttpWriter.close(HttpWriter.java:49) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.ResponseWriter.close(ResponseWriter.java:163) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.Dispatcher.commitResponse(Dispatcher.java:259) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:202) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:74) [project.war:1.0-SNAPSHOT]
    at org.ocpsoft.rewrite.servlet.impl.HttpRewriteResultHandler.handleResult(HttpRewriteResultHandler.java:41) [rewrite-servlet-2.0.12.Final.jar:2.0.12.Final]
    at org.ocpsoft.rewrite.servlet.RewriteFilter.rewrite(RewriteFilter.java:268) [rewrite-servlet-2.0.12.Final.jar:2.0.12.Final]
    at org.ocpsoft.rewrite.servlet.RewriteFilter.doFilter(RewriteFilter.java:188) [rewrite-servlet-2.0.12.Final.jar:2.0.12.Final]
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) [project.war:1.0-SNAPSHOT]
    at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.Server.handle(Server.java:534) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.server.HttpChannel.run(HttpChannel.java:267) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671) [project.war:1.0-SNAPSHOT]
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589) [project.war:1.0-SNAPSHOT]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_121]
[DEBUG] 2017-05-11 21:23:19.623 [qtp2114444063-27] SslConnection - filled b[0]= SslConnection@4811bc2d{NEED_UNWRAP,eio=0/-1,di=0} -> HTTP2ServerConnection@36ae36d5[DecryptedEndPoint@33608c07{/192.168.0.3:52103<->8443,CLOSED,in,OSHUT,-,-,4071/2000000,HTTP2ServerConnection@36ae36d5}->SelectChannelEndPoint@4dd57ced{/192.168.0.3:52103<->8443,CLOSED,ISHUT,OSHUT,-,-,25/2000000,SslConnection@4811bc2d}{io=1/1,kio=-1,kro=-1}]        

[DEBUG] 2017-05-11 21:23:19.652 [qtp2114444063-24] HttpTransportOverHTTP2 - HTTP2 Response #13 aborted

最佳答案

非常感谢,joakimesbordet .我发现使用 maven-dependency-plugin 解压 Jetty 服务器 jar没有合并 META-INF.servicesjetty-http-<version>.jarhttp2-hpack-<version>.jar .我已经合并了两者,它现在正在工作,因为 ServiceLoader现在正在加载 HpackFieldPreEncoder .

听取 joakime 的建议,我已将我的 jetty 类(class)从 war 的根源中删除到 WEB-INF.jetty-server ,并使用 JettyBootstrap在根目录下启动服务器,就像在实战中所做的那样。

你们live war的HTTP/2问题,这个项目我们要用到,所以要求alpn-boot.jar可能问题不大。

如果关于此设置有任何其他问题,我将很高兴知道。

再次感谢。

关于java - Jetty 将 HTTP 重定向到 HTTPS 在 IDE 外部失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43924443/

相关文章:

java - 在不知道长度的情况下从 TcpClient.GetStream() 读取

java - 将 JAVA 对象反序列化为具有关系的 JSON

java - JNI 中的复杂数组初始化

java - 无法编辑 netbeans.conf

java - 如何检查 JFileChooser 是否已选择文件?

netbeans - 如何在Netbeans中编码模板变量以大写|小写|大写?

java - 在 JBoss 中创建用户信息 bean

google-app-engine - Google App Engine + Cloudflare 上的通配符 SSL 证书

node.js - 检查服务器身份 MongoDB

mongodb - 在 Doctrine on Symfony 中为 MongoDB 配置 ssl 连接