SWEET! That fixed it. I just added the line: org.eclipse.jetty.http2.hpack.HpackFieldPreEncoder And it worked! Hallelujah!
Is that something I can configure with code? On Fri, Oct 4, 2019 at 8:12 PM Glen Peterson <[email protected]> wrote: > Yes. It has a single line: > org.eclipse.jetty.http.Http1FieldPreEncoder > > Should it have 2 lines? What if I just disallow that file altogether? > > On Fri, Oct 4, 2019 at 8:10 PM Greg Wilkins <[email protected]> wrote: > >> >> Glen, >> >> it is not a matter of if the classes are in the jar or not. It is a >> matter of if the META-INF/services has been correctly configured to load >> them with the ServiceLoader. >> >> Does your jar have >> a META-INF/services/org.eclipse.jetty.http.HttpFieldPreEncoder file and if >> so, what is it's contents? >> >> >> >> On Sat, 5 Oct 2019 at 10:05, Glen Peterson <[email protected]> >> wrote: >> >>> I may have been able to really simplify my example. Here's the entire >>> main method that works when run from class files, and fails when run from >>> the jar: >>> >>> val bb: ByteBuffer = ByteBuffer.allocate(100) >>> >>> PreEncodedHttpField("hello", "world").putTo(bb, HttpVersion.HTTP_1_0) >>> logger.info("hello world http 1.0: " + bb) >>> >>> PreEncodedHttpField("hello", "world").putTo(bb, HttpVersion.HTTP_1_1) >>> logger.info("hello world http 1.1: " + bb) >>> >>> PreEncodedHttpField("hello", "world").putTo(bb, HttpVersion.HTTP_2) >>> logger.info("hello world http 2: " + bb) >>> >>> OUTPUT (from Jar - breaks): >>> hello world http 1.0: java.nio.HeapByteBuffer[pos=14 lim=100 cap=100] >>> hello world http 1.1: java.nio.HeapByteBuffer[pos=28 lim=100 cap=100] >>> Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: >>> Index 1 out of bounds for length 1 >>> at >>> org.eclipse.jetty.http.PreEncodedHttpField.putTo(PreEncodedHttpField.java:118) >>> at org.organicdesign.classVsJar.ClazzVsJarKt.main(ClazzVsJar.kt:84) >>> >>> From classes it ends with: >>> hello world http 2: java.nio.HeapByteBuffer[pos=39 lim=100 cap=100] >>> >>> >>> Greg Wilkins: >>> logger.info("http1fieldpreEncoderVersion = " + >>> org.eclipse.jetty.http.Http1FieldPreEncoder().httpVersion) >>> logger.info("http2fieldpreEncoderVersion = " + >>> org.eclipse.jetty.http2.hpack.HpackFieldPreEncoder().httpVersion) >>> >>> Output: >>> http1fieldpreEncoderVersion = HTTP/1.0 >>> http2fieldpreEncoderVersion = HTTP/2.0 >>> >>> So both are in the Jar and successfully loaded by the JVM. Maybe I'm >>> getting an older version of one of them from another jar? Presumably >>> another jetty jar? My IDE doesn't give me a choice for where to import >>> them from, so I don't know where another version could be coming from. >>> >>> >>> On Fri, Oct 4, 2019 at 7:34 PM Glen Peterson <[email protected]> >>> wrote: >>> >>>> It *works* with http1.1 (I will also look more at the fat-jar thing): >>>> >>>> $ curl --http1.1 --verbose --insecure https://localhost:8443 -D >>>> headers.txt >>>> * Rebuilt URL to: https://localhost:8443/ >>>> * Trying 127.0.0.1... >>>> * TCP_NODELAY set >>>> * Connected to localhost (127.0.0.1) port 8443 (#0) >>>> * ALPN, offering http/1.1 >>>> * successfully set certificate verify locations: >>>> * CAfile: /etc/ssl/certs/ca-certificates.crt >>>> CApath: /etc/ssl/certs >>>> * TLSv1.3 (OUT), TLS handshake, Client hello (1): >>>> * TLSv1.3 (IN), TLS handshake, Server hello (2): >>>> * TLSv1.3 (IN), TLS Unknown, Certificate Status (22): >>>> * TLSv1.3 (IN), TLS handshake, Unknown (8): >>>> * TLSv1.3 (IN), TLS handshake, Certificate (11): >>>> * TLSv1.3 (IN), TLS handshake, CERT verify (15): >>>> * TLSv1.3 (IN), TLS handshake, Finished (20): >>>> * TLSv1.3 (OUT), TLS change cipher, Client hello (1): >>>> * TLSv1.3 (OUT), TLS Unknown, Certificate Status (22): >>>> * TLSv1.3 (OUT), TLS handshake, Finished (20): >>>> * SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 >>>> * ALPN, server accepted to use http/1.1 >>>> * Server certificate: >>>> * subject: C=US; ST=South Carolina; L=Upstate; O=OrganicDesign; >>>> OU=Testing; CN=classVsJar.organicdesign.org >>>> * start date: Oct 2 20:53:35 2019 GMT >>>> * expire date: Oct 2 20:53:35 2022 GMT >>>> * issuer: C=US; ST=South Carolina; L=Upstate; O=OrganicDesign; >>>> OU=Testing; CN=classVsJar.organicdesign.org >>>> * SSL certificate verify result: self signed certificate (18), >>>> continuing anyway. >>>> * TLSv1.3 (OUT), TLS Unknown, Unknown (23): >>>> > GET / HTTP/1.1 >>>> > Host: localhost:8443 >>>> > User-Agent: curl/7.58.0 >>>> > Accept: */* >>>> > >>>> * TLSv1.3 (IN), TLS Unknown, Unknown (23): >>>> < HTTP/1.1 200 OK >>>> < Content-Type: text/html;charset=utf-8 >>>> < Content-Length: 178 >>>> < Server: Jetty(9.4.20.v20190813) >>>> < >>>> * TLSv1.3 (IN), TLS Unknown, Unknown (23): >>>> <!DOCTYPE html> >>>> <html lang="en"> >>>> <head> >>>> <meta charset="utf-8"> >>>> <title>Test Page</title> >>>> </head> >>>> <body> >>>> <h1>It works!</h1> >>>> <p>Working.</p> >>>> </body> >>>> </html> >>>> * Connection #0 to host localhost left intact >>>> >>>> On Fri, Oct 4, 2019 at 6:32 PM Greg Wilkins <[email protected]> wrote: >>>> >>>>> I'm guessing the problem is the way you make your fat jar you must not >>>>> be correctly combining the >>>>> META-INF/services/org.eclipse.jetty.http.HttpFieldPreEncoder files >>>>> >>>>> To run both http1 and http2, you need that file to exist in the jar >>>>> and to contain: >>>>> >>>>> org.eclipse.jetty.http.Http1FieldPreEncoder >>>>> org.eclipse.jetty.http2.hpack.HpackFieldPreEncoder >>>>> >>>>> >>>>> On Sat, 5 Oct 2019 at 07:35, Joakim Erdfelt <[email protected]> >>>>> wrote: >>>>> >>>>>> Interesting, I wonder if you are hitting the response headers issues >>>>>> with regards to HTTP/2. >>>>>> >>>>>> See: >>>>>> https://github.com/eclipse/jetty.project/issues/3956 >>>>>> and https://github.com/eclipse/jetty.project/issues/4115 >>>>>> >>>>>> Can you run curl again, but with HTTP/1.1? >>>>>> >>>>>> $ curl --http1.1 --verbose .... >>>>>> >>>>>> What kind of headers are you actually using? >>>>>> >>>>>> Joakim Erdfelt / [email protected] >>>>>> >>>>>> >>>>>> On Fri, Oct 4, 2019 at 4:04 PM Glen Peterson < >>>>>> [email protected]> wrote: >>>>>> >>>>>>> I changed the logging configuration from INFO to DEBUG and found >>>>>>> this error when Jetty tries to serve the request: >>>>>>> >>>>>>> Sending HeadersFrame@676f5d6c#1{end=false} >>>>>>> Appended HeadersFrame@676f5d6c#1{end=false}, entries=1 >>>>>>> Flushing HTTP2ServerSession@74a58163{l:/0:0:0:0:0:0:0:1:8443 <-> >>>>>>> r:/0:0:0:0:0:0:0:1:53320,sendWindow=15728640,recvWindow=1048576,streams=1,NOT_CLOSED,null} >>>>>>> Processing HeadersFrame@676f5d6c#1{end=false} >>>>>>> CtxTbl[3319f232] encoding >>>>>>> encode IdxFieldS1:':status: 200' to '88' >>>>>>> Failure generating HeadersFrame@676f5d6c#1{end=false} >>>>>>> >>>>>>> java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for >>>>>>> length 1 >>>>>>> >>>>>>> at >>>>>>> org.eclipse.jetty.http.PreEncodedHttpField.putTo(PreEncodedHttpField.java:118) >>>>>>> at >>>>>>> org.eclipse.jetty.http2.hpack.HpackEncoder.encode(HpackEncoder.java:316) >>>>>>> at >>>>>>> org.eclipse.jetty.http2.hpack.HpackEncoder.encode(HpackEncoder.java:204) >>>>>>> at >>>>>>> org.eclipse.jetty.http2.generator.HeadersGenerator.generateHeaders(HeadersGenerator.java:72) >>>>>>> at >>>>>>> org.eclipse.jetty.http2.generator.HeadersGenerator.generate(HeadersGenerator.java:56) >>>>>>> at >>>>>>> org.eclipse.jetty.http2.generator.Generator.control(Generator.java:80) >>>>>>> at >>>>>>> org.eclipse.jetty.http2.HTTP2Session$ControlEntry.generate(HTTP2Session.java:1250) >>>>>>> at >>>>>>> org.eclipse.jetty.http2.HTTP2Flusher.process(HTTP2Flusher.java:187) >>>>>>> at >>>>>>> org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:241) >>>>>>> at >>>>>>> org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:223) >>>>>>> at org.eclipse.jetty.http2.HTTP2Session.frame(HTTP2Session.java:757) >>>>>>> at org.eclipse.jetty.http2.HTTP2Session.frames(HTTP2Session.java:727) >>>>>>> at org.eclipse.jetty.http2.HTTP2Stream.headers(HTTP2Stream.java:112) >>>>>>> at >>>>>>> org.eclipse.jetty.http2.server.HttpTransportOverHTTP2.sendHeadersFrame(HttpTransportOverHTTP2.java:270) >>>>>>> at >>>>>>> org.eclipse.jetty.http2.server.HttpTransportOverHTTP2.send(HttpTransportOverHTTP2.java:142) >>>>>>> at >>>>>>> org.eclipse.jetty.server.HttpChannel.sendResponse(HttpChannel.java:852) >>>>>>> at org.eclipse.jetty.server.HttpChannel.write(HttpChannel.java:929) >>>>>>> at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:250) >>>>>>> at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:226) >>>>>>> at org.eclipse.jetty.server.HttpOutput.close(HttpOutput.java:308) >>>>>>> at org.eclipse.jetty.server.HttpWriter.close(HttpWriter.java:47) >>>>>>> at >>>>>>> org.eclipse.jetty.server.ResponseWriter.close(ResponseWriter.java:161) >>>>>>> at org.eclipse.jetty.server.Response.closeOutput(Response.java:844) >>>>>>> at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:517) >>>>>>> at org.eclipse.jetty.server.HttpChannel.run(HttpChannel.java:314) >>>>>>> at >>>>>>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) >>>>>>> at >>>>>>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) >>>>>>> at >>>>>>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) >>>>>>> at >>>>>>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:135) >>>>>>> at >>>>>>> org.eclipse.jetty.http2.HTTP2Connection.produce(HTTP2Connection.java:170) >>>>>>> at >>>>>>> org.eclipse.jetty.http2.server.HTTP2ServerConnection.onOpen(HTTP2ServerConnection.java:150) >>>>>>> at >>>>>>> org.eclipse.jetty.io.AbstractEndPoint.upgrade(AbstractEndPoint.java:442) >>>>>>> at >>>>>>> org.eclipse.jetty.server.NegotiatingServerConnection.onFillable(NegotiatingServerConnection.java:130) >>>>>>> at >>>>>>> org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) >>>>>>> at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) >>>>>>> at >>>>>>> org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:426) >>>>>>> at >>>>>>> org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:320) >>>>>>> at >>>>>>> org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:158) >>>>>>> at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) >>>>>>> at >>>>>>> org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) >>>>>>> at >>>>>>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) >>>>>>> at >>>>>>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) >>>>>>> at >>>>>>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) >>>>>>> at >>>>>>> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) >>>>>>> at >>>>>>> org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:367) >>>>>>> at >>>>>>> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:782) >>>>>>> at >>>>>>> org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:918) >>>>>>> at java.base/java.lang.Thread.run(Thread.java:834) >>>>>>> Failing, entries processed/pending/queued=0/1/0 >>>>>>> >>>>>>> I re-posted this version here: >>>>>>> https://github.com/GlenKPeterson/classVsJar >>>>>>> >>>>>>> On Wed, Oct 2, 2019 at 5:40 PM Glen Peterson < >>>>>>> [email protected]> wrote: >>>>>>> >>>>>>>> Yes Joakim. I just made one and posted it here: >>>>>>>> https://github.com/GlenKPeterson/classVsJar >>>>>>>> >>>>>>>> On Wed, Oct 2, 2019 at 2:43 PM Joakim Erdfelt <[email protected]> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> Do you have a project that you can share that replicates this? >>>>>>>>> >>>>>>>>> Joakim Erdfelt / [email protected] >>>>>>>>> >>>>>>>>> >>>>>>>>> On Wed, Oct 2, 2019 at 1:16 PM Glen Peterson < >>>>>>>>> [email protected]> wrote: >>>>>>>>> >>>>>>>>>> P.S. I was able to get some interesting output from wget2 >>>>>>>>>> (successor to wget). It works fine running with the classes. With >>>>>>>>>> the jar >>>>>>>>>> file, I get the following which seems jetty-related: >>>>>>>>>> >>>>>>>>>> $ wget2 -d --no-check-certificate >>>>>>>>>> https://dev.memoryjoggerlibrary.com:8443/ >>>>>>>>>> 02.140606.876 name=check-certificate value= >>>>>>>>>> https://dev.memoryjoggerlibrary.com:8443/ invert=1 >>>>>>>>>> 02.140606.876 name=check-certificate value= >>>>>>>>>> https://dev.memoryjoggerlibrary.com:8443/ invert=1 >>>>>>>>>> 02.140606.876 Local URI encoding = 'UTF-8' >>>>>>>>>> 02.140606.876 Input URI encoding = 'UTF-8' >>>>>>>>>> 02.140606.876 Fetched HSTS data from '/home/gpeterso/.wget-hsts' >>>>>>>>>> 02.140606.876 Fetched HPKP data from '/home/gpeterso/.wget-hpkp' >>>>>>>>>> 02.140606.877 add TLS session data for >>>>>>>>>> dev.memoryjoggerlibrary.com (maxage=64800, size=1260) >>>>>>>>>> 02.140606.877 Fetched TLS session data from >>>>>>>>>> '/home/gpeterso/.wget-session' >>>>>>>>>> 02.140606.877 Fetched OCSP hosts from >>>>>>>>>> '/home/gpeterso/.wget-ocsp_hosts' >>>>>>>>>> 02.140606.877 Fetched OCSP fingerprints from >>>>>>>>>> '/home/gpeterso/.wget-ocsp' >>>>>>>>>> 02.140606.877 *url = https://dev.memoryjoggerlibrary.com:8443/ >>>>>>>>>> 02.140606.877 *3 https://dev.memoryjoggerlibrary.com:8443/ >>>>>>>>>> 02.140606.877 local filename = 'index.html' >>>>>>>>>> 02.140606.877 host_add_job: job fname index.html >>>>>>>>>> 02.140606.877 host_add_job: 0x55b15a6bfb60 >>>>>>>>>> https://dev.memoryjoggerlibrary.com:8443/ >>>>>>>>>> 02.140606.877 host_add_job: qsize 1 host-qsize=1 >>>>>>>>>> 02.140606.877 queue_size: qsize=1 >>>>>>>>>> 02.140606.877 queue_size: qsize=1 >>>>>>>>>> 02.140606.877 queue_size: qsize=1 >>>>>>>>>> 02.140606.877 [0] action=1 pending=0 host=0x0 >>>>>>>>>> 02.140606.877 qsize=1 blocked=0 >>>>>>>>>> 02.140606.877 pause=-1570039566877 >>>>>>>>>> 02.140606.877 dequeue job >>>>>>>>>> https://dev.memoryjoggerlibrary.com:8443/ >>>>>>>>>> 02.140606.877 resolving dev.memoryjoggerlibrary.com:8443... >>>>>>>>>> 02.140606.877 has 127.0.0.1:8443 >>>>>>>>>> 02.140606.877 Add dns cache entry dev.memoryjoggerlibrary.com >>>>>>>>>> 02.140606.877 trying 127.0.0.1:8443... >>>>>>>>>> 02.140606.877 GnuTLS init >>>>>>>>>> 02.140606.877 Certificates loaded: -1 >>>>>>>>>> 02.140606.877 GnuTLS init done >>>>>>>>>> 02.140606.877 TLS False Start requested >>>>>>>>>> 02.140606.877 ALPN offering h2 >>>>>>>>>> 02.140606.877 ALPN offering http/1.1 >>>>>>>>>> 02.140606.877 found cached session data for >>>>>>>>>> dev.memoryjoggerlibrary.com >>>>>>>>>> WARNING: The certificate is NOT trusted. The certificate issuer >>>>>>>>>> is unknown. >>>>>>>>>> 02.140606.885 TLS False Start: on >>>>>>>>>> 02.140606.885 ALPN: Server accepted protocol 'h2' >>>>>>>>>> 02.140606.885 Handshake completed >>>>>>>>>> 02.140606.885 established connection dev.memoryjoggerlibrary.com >>>>>>>>>> 02.140606.885 cookie_create_request_header for host= >>>>>>>>>> dev.memoryjoggerlibrary.com path= >>>>>>>>>> 02.140606.885 HTTP2 stream id 1 >>>>>>>>>> 02.140606.885 [0] action=1 pending=1 host=0x55b15a6bf9c0 >>>>>>>>>> 02.140606.885 qsize=1 blocked=0 >>>>>>>>>> 02.140606.885 pause=-1570039566885 >>>>>>>>>> 02.140606.885 [0] action=2 pending=1 host=0x55b15a6bf9c0 >>>>>>>>>> 02.140606.885 ## pending_requests = 1 >>>>>>>>>> 02.140606.885 ## loop responses=0 >>>>>>>>>> 02.140606.885 [FRAME 0] > SETTINGS >>>>>>>>>> 02.140606.885 [FRAME 1] > HEADERS >>>>>>>>>> 02.140606.885 [FRAME 1] > :method: GET >>>>>>>>>> 02.140606.885 [FRAME 1] > :path: / >>>>>>>>>> 02.140606.885 [FRAME 1] > :scheme: https >>>>>>>>>> 02.140606.885 [FRAME 1] > :authority: dev.memoryjoggerlibrary.com >>>>>>>>>> 02.140606.885 [FRAME 1] > accept-encoding: gzip, deflate, bzip2, >>>>>>>>>> xz, lzma >>>>>>>>>> 02.140606.885 [FRAME 1] > accept: >>>>>>>>>> text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 >>>>>>>>>> 02.140606.885 [FRAME 1] > user-agent: wget2/1.0.0 >>>>>>>>>> 02.140606.885 ## loop responses=0 >>>>>>>>>> 02.140606.886 Got delayed session data >>>>>>>>>> 02.140606.886 found TLS session data for >>>>>>>>>> dev.memoryjoggerlibrary.com >>>>>>>>>> 02.140606.886 removed TLS session data for >>>>>>>>>> dev.memoryjoggerlibrary.com >>>>>>>>>> 02.140606.886 add TLS session data for >>>>>>>>>> dev.memoryjoggerlibrary.com (maxage=64800, size=1260) >>>>>>>>>> 02.140606.886 ## loop responses=0 >>>>>>>>>> 02.140606.886 [FRAME 0] < SETTINGS >>>>>>>>>> 02.140606.886 [FRAME 0] < WINDOW_UPDATE >>>>>>>>>> 02.140606.886 ## loop responses=0 >>>>>>>>>> 02.140606.886 [FRAME 0] > SETTINGS >>>>>>>>>> 02.140606.886 ## loop responses=0 >>>>>>>>>> 02.140606.886 [FRAME 0] < SETTINGS >>>>>>>>>> 02.140606.886 ## loop responses=0 >>>>>>>>>> 02.140608.260 ## loop responses=0 >>>>>>>>>> 02.140608.260 ## loop responses=0 >>>>>>>>>> 02.140608.260 ## loop responses=0 >>>>>>>>>> 02.140608.260 ## loop responses=0 >>>>>>>>>> 02.140608.260 ## loop responses=0 >>>>>>>>>> 02.140608.260 ## loop responses=0 >>>>>>>>>> 02.140608.260 ## loop responses=0 >>>>>>>>>> 02.140608.260 ## loop responses=0 >>>>>>>>>> 02.140608.260 ## loop responses=0 >>>>>>>>>> 02.140608.260 ## loop responses=0 >>>>>>>>>> 02.140608.260 ## loop responses=0 >>>>>>>>>> >>>>>>>>>> That scrolled really fast in a loop until I hit CTRL-C >>>>>>>>>> >>>>>>>>>> 02.140608.260 host_increase_failure: dev.memoryjoggerlibrary.com >>>>>>>>>> failures=1 >>>>>>>>>> 02.140608.260 closing connection >>>>>>>>>> >>>>>>>>>> It just sat there doing nothing, so I hit CTRL-C again to exit >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Wed, Oct 2, 2019 at 1:43 PM Glen Peterson < >>>>>>>>>> [email protected]> wrote: >>>>>>>>>> >>>>>>>>>>> Thank you for jetty. I've been using it for a few years now and >>>>>>>>>>> love it. Especially that I can configure it programmatically (with >>>>>>>>>>> Kotlin >>>>>>>>>>> code) and that you have updated the SSL/TLS protocol defaults over >>>>>>>>>>> time. >>>>>>>>>>> Such an improvement over Tomcat! >>>>>>>>>>> >>>>>>>>>>> *Problem* >>>>>>>>>>> My problem may be jar-file/classpath related and not jetty >>>>>>>>>>> related, but then why does jetty actually call my code, service the >>>>>>>>>>> request, but not return the response? >>>>>>>>>>> >>>>>>>>>>> I recently enabled HTTP/2 (Google wants that for a Progressive >>>>>>>>>>> Web App). Now if I run my app the way IntelliJ does, giving the >>>>>>>>>>> compiled >>>>>>>>>>> classes directory, then adding all the jar dependencies it works. >>>>>>>>>>> `java >>>>>>>>>>> -classpath classes/:bunch-of-jar-files... MainClassName` it works. >>>>>>>>>>> But if >>>>>>>>>>> I run from the fat-jar file it doesn't work. >>>>>>>>>>> >>>>>>>>>>> *curl* >>>>>>>>>>> >>>>>>>>>>> *Jar File Failure:* >>>>>>>>>>> $ curl --insecure https://dev.memoryjoggerlibrary.com:8443 -D >>>>>>>>>>> headers.txt >>>>>>>>>>> curl: (56) Unexpected EOF >>>>>>>>>>> $ ls -s >>>>>>>>>>> total 0 >>>>>>>>>>> 0 headers.txt >>>>>>>>>>> >>>>>>>>>>> *Class Files Success:* >>>>>>>>>>> That same curl command returns the HTML file I was expecting >>>>>>>>>>> when running with the massive classpath (no fat-jar), plus the >>>>>>>>>>> following >>>>>>>>>>> headers.txt: >>>>>>>>>>> HTTP/2 200 >>>>>>>>>>> server: Jetty(9.4.20.v20190813) >>>>>>>>>>> content-type: text/html;charset=utf-8 >>>>>>>>>>> >>>>>>>>>>> I have determined that the jar files included by maven exactly >>>>>>>>>>> match the jar files specified on the command line. >>>>>>>>>>> >>>>>>>>>>> *Chrome* >>>>>>>>>>> With chrome, the class files work great, but the Jar file >>>>>>>>>>> produces, "This site can’t be reached... unexpectedly closed the >>>>>>>>>>> connection... ERR_CONNECTION_CLOSED" >>>>>>>>>>> >>>>>>>>>>> *Unaffected* >>>>>>>>>>> *Log Files:* >>>>>>>>>>> I can see in the log files in both cases that the request is >>>>>>>>>>> being processed, but there is no exception thrown and no response >>>>>>>>>>> apparently written. >>>>>>>>>>> >>>>>>>>>>> *Nmap Cipher Test:* >>>>>>>>>>> Whether it yields HTML or not, the server gives the same >>>>>>>>>>> response to my cipher test: >>>>>>>>>>> $ nmap --script ssl-cert,ssl-enum-ciphers -p 8443 >>>>>>>>>>> dev.memoryjoggerlibrary.com >>>>>>>>>>> >>>>>>>>>>> Starting Nmap 7.60 ( https://nmap.org ) at 2019-10-02 13:32 EDT >>>>>>>>>>> Nmap scan report for dev.memoryjoggerlibrary.com (127.0.0.1) >>>>>>>>>>> Host is up (0.000053s latency). >>>>>>>>>>> rDNS record for 127.0.0.1: localhost >>>>>>>>>>> >>>>>>>>>>> PORT STATE SERVICE >>>>>>>>>>> 8443/tcp open https-alt >>>>>>>>>>> | ssl-cert: Subject: commonName= >>>>>>>>>>> dev.memoryjoggerlibrary.com/organizationName=PlanBase >>>>>>>>>>> Inc./stateOrProvinceName=Massachusetts/countryName=US >>>>>>>>>>> | Issuer: commonName= >>>>>>>>>>> dev.memoryjoggerlibrary.com/organizationName=PlanBase >>>>>>>>>>> Inc./stateOrProvinceName=Massachusetts/countryName=US >>>>>>>>>>> | Public Key type: rsa >>>>>>>>>>> | Public Key bits: 2048 >>>>>>>>>>> | Signature Algorithm: sha256WithRSAEncryption >>>>>>>>>>> | Not valid before: 2019-09-25T20:57:00 >>>>>>>>>>> | Not valid after: 2022-09-25T20:57:00 >>>>>>>>>>> | MD5: 483e 988f 709f 7300 3f3d 1d51 4f95 81cb >>>>>>>>>>> |_SHA-1: abe8 c872 c7d7 dfb1 4152 8bf3 2fee 5617 7613 94cd >>>>>>>>>>> | ssl-enum-ciphers: >>>>>>>>>>> | TLSv1.2: >>>>>>>>>>> | ciphers: >>>>>>>>>>> | TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A >>>>>>>>>>> | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A >>>>>>>>>>> | TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (rsa 2048) - >>>>>>>>>>> A >>>>>>>>>>> | compressors: >>>>>>>>>>> | NULL >>>>>>>>>>> | cipher preference: server >>>>>>>>>>> |_ least strength: A >>>>>>>>>>> >>>>>>>>>>> Nmap done: 1 IP address (1 host up) scanned in 0.19 seconds >>>>>>>>>>> >>>>>>>>>>> *Details:* >>>>>>>>>>> I'm using a self-signed certificate. >>>>>>>>>>> >>>>>>>>>>> Currently using (from maven .pom): >>>>>>>>>>> <jetty.version>9.4.20.v20190813 >>>>>>>>>>> jetty-server >>>>>>>>>>> jetty-alpn-conscrypt-server >>>>>>>>>>> http2-common >>>>>>>>>>> http2-hpack >>>>>>>>>>> http2-server >>>>>>>>>>> >>>>>>>>>>> Not currently using: conscrypt-openjdk (seems to be overridden >>>>>>>>>>> by the conscrypt-openjdk-uber included in >>>>>>>>>>> jetty-alpn-conscrypt-server - >>>>>>>>>>> same issues with or without this dependency) >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Glen K. Peterson >>>>>>>>>>> (828) 393-0081 >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Glen K. Peterson >>>>>>>>>> (828) 393-0081 >>>>>>>>>> _______________________________________________ >>>>>>>>>> jetty-users mailing list >>>>>>>>>> [email protected] >>>>>>>>>> To change your delivery options, retrieve your password, or >>>>>>>>>> unsubscribe from this list, visit >>>>>>>>>> https://www.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://www.eclipse.org/mailman/listinfo/jetty-users >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Glen K. Peterson >>>>>>>> (828) 393-0081 >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Glen K. Peterson >>>>>>> (828) 393-0081 >>>>>>> _______________________________________________ >>>>>>> jetty-users mailing list >>>>>>> [email protected] >>>>>>> To change your delivery options, retrieve your password, or >>>>>>> unsubscribe from this list, visit >>>>>>> https://www.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://www.eclipse.org/mailman/listinfo/jetty-users >>>>> >>>>> >>>>> >>>>> -- >>>>> Greg Wilkins <[email protected]> CTO http://webtide.com >>>>> _______________________________________________ >>>>> jetty-users mailing list >>>>> [email protected] >>>>> To change your delivery options, retrieve your password, or >>>>> unsubscribe from this list, visit >>>>> https://www.eclipse.org/mailman/listinfo/jetty-users >>>> >>>> >>>> >>>> -- >>>> Glen K. Peterson >>>> (828) 393-0081 >>>> >>> >>> >>> -- >>> Glen K. Peterson >>> (828) 393-0081 >>> _______________________________________________ >>> jetty-users mailing list >>> [email protected] >>> To change your delivery options, retrieve your password, or unsubscribe >>> from this list, visit >>> https://www.eclipse.org/mailman/listinfo/jetty-users >> >> >> >> -- >> Greg Wilkins <[email protected]> CTO http://webtide.com >> _______________________________________________ >> jetty-users mailing list >> [email protected] >> To change your delivery options, retrieve your password, or unsubscribe >> from this list, visit >> https://www.eclipse.org/mailman/listinfo/jetty-users > > > > -- > Glen K. Peterson > (828) 393-0081 > -- Glen K. Peterson (828) 393-0081
_______________________________________________ jetty-users mailing list [email protected] To change your delivery options, retrieve your password, or unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jetty-users
