revising the servletcontextholder changes the result:
https://gist.github.com/jnorthrup/792a43d73178ee38d686035fca3d146d
class JettyStarter(
/**
*
*/
private vararg val args: String) : AutoCloseable {
private val server: Server =
Server().apply {
val httpFactory =
HttpConnectionFactory(HttpConfiguration().apply {
addCustomizer(SecureRequestCustomizer())
})
val http2Factory =
HTTP2ServerConnectionFactory(HttpConfiguration().apply {
secureScheme = "https"
securePort = SSL_PORT
sendXPoweredBy = false
sendServerVersion = false
addCustomizer(SecureRequestCustomizer())
})
val alpn1 = ALPNServerConnectionFactory().apply {
defaultProtocol = httpFactory.protocol
}
requestLog = AsyncNCSARequestLog()
// HTTP Configuration
connectors = arrayOf(
//Create a connector on port 80 to listen for HTTP
requests (that will get redirected)... fail
ServerConnector(this, httpFactory).apply {
setPort(8080)
},
ServerConnector(this,
SslConnectionFactory(SslContextFactory().apply {
keyStorePath =
JettyStarter::class.java.getResource("/keystore").toExternalForm()
setKeyStorePassword("changeit")
cipherComparator = HTTP2Cipher.COMPARATOR
isUseCipherSuitesOrder = true
}, alpn1.protocol),
alpn1,
http2Factory,
httpFactory
).apply { port = SSL_PORT })
//setup the constraint that causes all http requests to
return a !403 error
handler = ConstraintSecurityHandler().apply {
//makes the constraint apply to all uri paths
addConstraintMapping(ConstraintMapping().apply {
pathSpec = "/*"
constraint = Constraint().apply { dataConstraint =
DC_CONFIDENTIAL }
})
handler = GzipHandler().apply {
handler = ContextHandlerCollection(
org.eclipse.jetty.servlet.ServletContextHandler().apply {
contextPath = "/"
handler = ResourceHandler().apply {
welcomeFiles = arrayOf("index.html")
baseResource = Resource.newResource(
args.firstOrNull() ?:
AdapterServlet.resourceBase.toString())
}
servletContext.addFilter("push",
PushCacheFilter::class.java).apply {
initParameters =
mapOf("maxAssociations" to "32",
"ports" to
Objects.toString(SSL_PORT )
)
}
//TODO: repair http2 PUSH
// where do I slip this in?
},
ServletContextHandler().apply {
addServlet(AdapterServlet::class.java,
"/*")
}
)
}
}
}
/**
*
*/
@Throws(Exception::class)
fun start() {
server.start()
}
/**
*
*/
@Throws(Exception::class)
override fun close() {
server.stop()
}
}
On Fri, Feb 15, 2019 at 12:21 PM James Northrup <[email protected]> wrote:
> this is the uncommented outome
> https://gist.github.com/jnorthrup/75d718f14db3ba916bbfa4f367ff0628
>
> Server@732f6050{STOPPED}[9.4.14.v20181114]
>
> 12:00:07.222 [main] DEBUG
> org.eclipse.jetty.util.component.ContainerLifeCycle -
> o.e.j.s.h.ContextHandler@20eaeaf8{/,null,UNAVAILABLE} added
> {ResourceHandler@748ac6f3{STOPPED},MANAGED}
> 12:00:07.223 [main] WARN org.eclipse.jetty.server.handler.ContextHandler -
> Unimplemented - use
> org.eclipse.jetty.servlet.ServletContextHandlerException in thread "main"
> java.lang.NullPointerException at
> id.kbr.prime.JettyStarter.<init>(JettyStarter.kt:86)
>
>
> i read, and re-read the jetty examples for embedding and tried to infer
> the simplest one that could add http2/push with static, a rest api, and
> gzip. i feel like there's a linkage or an explanation page for all this
> that's not among the quickstart
>
>
>
> On Wed, Feb 13, 2019 at 6:06 PM Simone Bordet <[email protected]> wrote:
>
>> Hi,
>>
>> On Wed, Feb 13, 2019 at 11:01 AM James Northrup <[email protected]> wrote:
>> >
>> > i have a dillema where my jetty configs led me to a certain
>> configuration but the PushCacheFilter does not work on launch, it throws an
>> NPE.
>>
>> Jetty version?
>> Stack trace of the NPE?
>>
>> > i use a restapi that previously inheritted defaultservlet and served
>> the static content itself, and this worked well for PushCacheFilter though
>> i did not want to duplicate the welcomefiles functionality and so
>> refactored to this now.
>>
>> Code seems ok, provided you uncomment the PushCacheFilter.
>>
>> --
>> Simone Bordet
>> ----
>> http://cometd.org
>> http://webtide.com
>> Developer advice, training, services and support
>> from the Jetty & CometD experts.
>> _______________________________________________
>> 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