Hi JB,

> First, you can use the ProxyService directly to programmatically create
> the proxies you need.

I read the proxy service of the Karaf project but this does not fit to
my use-case.
I use a subclass of Jetty's proxy servlet because the "proxyTo" is not fixed.
It depends on the caller of the URL which backend is used to generate
the response for the request.

Think about a system where an user needs to be logged in first.
The login credentials are used to choose the real backend system.

If user 1 calls httsp://some.thing/foo/bar the "reverse proxy"
redirects the request to https://10.10.10.101/foo/bar
If user 2 calls httsp://some.thing/foo/bar the "reverse proxy"
redirects the request to https://10.10.10.102/foo/bar
...

So my servlet is a subclass of the proxy servlet that generated the
URL for the rewrite target in a very dynamic way.

And it is already working it is just some additional work to align the
Jetty version on every Karaf bump.

> About the version, it's actually the opposite: the Jetty proxy is a pure
> servlet, and a version of Jetty proxy can work with other Jetty version.

Sure, the proxy is just a servlet but the implementation is using a
e.g. Jetty HttpClient:

* 
https://github.com/eclipse/jetty.project/blob/jetty-9.4.18.v20190429/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/AbstractProxyServlet.java#L43
* 
https://github.com/eclipse/jetty.project/blob/jetty-9.4.18.v20190429/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/AbstractProxyServlet.java#L129
* 
https://github.com/eclipse/jetty.project/blob/jetty-9.4.18.v20190429/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/AbstractProxyServlet.java#L273

If the Jetty proxy servlet implementation is newer then the Jetty HTTP
Client the proxy servlet implementation could potentially use
functions that are not yet present in the provided HttpClient
implementation.
If strong semver is used a newer HTTP Client should still support all
stuff used by the proxy servlet but how knows...


The Jetty proxy artifact is already an OSGi bundle, so what's the "big
win" to add its classes to every bundle as private package instead of
adding the jetty-proxy bundle to the OSGi runtime?

Thank you for your patient,
Markus

Reply via email to