OpenNTF / openliberty-domino

Open Liberty server embedded in Domino
Apache License 2.0
7 stars 3 forks source link

Add proxy for legacy Domino HTTP requests #4

Closed jesse-gallagher closed 3 years ago

jesse-gallagher commented 5 years ago

To make it so that this can "replace" the nHTTP stack as the entrypoint for HTTP in Domino, it could be worth adding an internal proxy for any unmatched URLs to pass through to Domino. Zuul may be a good option here. The route to do that may be to just add a default web app at the "/" context root that does the local proxying.

jesse-gallagher commented 5 years ago

For now, at least, this is accomplished via a proxy webapp. It'd be good to be able to automatically deploy this or to find an alternate way (say, if WLP has a way to add a default servlet via an extension).

jesse-gallagher commented 5 years ago

Rather than being deployed as a standalone war, it should be possible to make this a user feature, as the REST connector auto-deploys an app like we'd want: https://github.com/OpenLiberty/open-liberty/tree/c1a9e206cb22fdbdfcdc4b39b04327814f661929/dev/com.ibm.ws.jmx.connector.server.rest/src/com/ibm/ws/jmx/connector/server/rest

jesse-gallagher commented 5 years ago

There's a lot going on in that feature, but it looks like the pertinent part may be just an OSGi "WAB": https://osgi.org/specification/osgi.cmpn/7.0.0/service.war.html

jesse-gallagher commented 5 years ago

This is a real bear. I fiddled around a bunch with a WAB, but I'm not really sure if it's possible to use them on Open Liberty. OSGi-based development isn't supported for normal apps, but I'm not sure how much that applies for feature extensions. This would also be doable if there's an extension point to intercept either all requests, all responses, or (best) just requests that aren't bound to a given web app.

Failing all that, the .war file deployed to the "/" context root works.

jesse-gallagher commented 5 years ago

The deployed .war doesn't quite work currently - it leads to a "Corrupted Content Error" when POSTing login credentials, which is a pretty big impediment. I'm not crazy about the proxy implementation, so it'd be worth doing another search for existing clean Java proxy implementations.