[ https://issues.apache.org/jira/browse/GEODE-10007?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
John Blum updated GEODE-10007: ------------------------------ Description: The {{HttpService}} interface is defined and used as a _Service Provider Interface_ (SPI) inside Apache Geode and even loaded as such using the _Java_ {{ServerLoader}} ([Javadoc|https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/ServiceLoader.html]) class in order to locate and load provider implementations. An SPI is not much good if "providers" are not allowed to "provide" an implementation of the service interfaces used to extend or customize Apache Geode. This allows any application, framework, tool or product a degree of extensibility and flexibility, afforded to users without intervention, by being able to "provide" a custom implementation or extension as needed by the application, framework, tool or product. 1 such example would be to be able to supply a Jakarta EE 9 (spec) compliant implementation of an embedded HTTP server (e.g. Jetty, Tomcat or even Undertow) used by Geode to bootstrap the embedded HTTP service hosting the Geode provided Web apps (e.g. Pulse, Management/Admin REST API, Developer REST API) when external hosting is not an option. Of course, these Web apps need to be updated as well (to use the new Jakarta EE 9 specs). There are other examples of SPIs used inn Apache Geode, which are part of the non-internal, public API. For example, the [ServerLaucherCacheProvider|https://geode.apache.org/releases/latest/javadoc/org/apache/geode/distributed/ServerLauncherCacheProvider.html] interface, with 1 such [implementation|https://docs.spring.io/spring-data/geode/docs/current/api/org/springframework/data/gemfire/support/SpringServerLauncherCacheProvider.html] provided by _Spring Data for Apache Geode_ (SDG) even. was: The {{HttpService}} interface is defined and used as a _Service Provider Interface_ (SPI) inside Apache Geode and even loaded as such using the _Java_ {{ServerLoader}} ([Javadoc|https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/ServiceLoader.html]) class in order to locate and load provider implementations. An SPI is not much good if "providers" are not allowed to "provide" an implementation of the service interfaces used to extend or customize Apache Geode. This allows any application, framework, tool or product a degree of extensibility and flexibility, afforded to users without intervention by being able to "provide" a custom implementation or extension as needed by the application, framework, tool or product. 1 such example would be to be able to supply a Jakarta EE 9 (spec) compliant implementation of an embedded HTTP server (e.g. Jetty, Tomcat or even Undertow) used by Geode to bootstrap the embedded HTTP service hosting the Geode provided Web apps (e.g. Pulse, Management/Admin REST API, Developer REST API) when external hosting is not an option. Of course, these Web apps need to be updated as well (to use the new Jakarta EE 9 specs). There are other examples of SPIs used inn Apache Geode, which are part of the non-internal, public API. For example, the [ServerLaucherCacheProvider|https://geode.apache.org/releases/latest/javadoc/org/apache/geode/distributed/ServerLauncherCacheProvider.html] interface, with 1 such [implementation|https://docs.spring.io/spring-data/geode/docs/current/api/org/springframework/data/gemfire/support/SpringServerLauncherCacheProvider.html] provided by _Spring Data for Apache Geode_ (SDG) even. > Make o.a.geode.cache.internal.HttpService SPI part of the non-internal, > public API > ---------------------------------------------------------------------------------- > > Key: GEODE-10007 > URL: https://issues.apache.org/jira/browse/GEODE-10007 > Project: Geode > Issue Type: Improvement > Reporter: John Blum > Priority: Minor > > The {{HttpService}} interface is defined and used as a _Service Provider > Interface_ (SPI) inside Apache Geode and even loaded as such using the _Java_ > {{ServerLoader}} > ([Javadoc|https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/ServiceLoader.html]) > class in order to locate and load provider implementations. > An SPI is not much good if "providers" are not allowed to "provide" an > implementation of the service interfaces used to extend or customize Apache > Geode. This allows any application, framework, tool or product a degree of > extensibility and flexibility, afforded to users without intervention, by > being able to "provide" a custom implementation or extension as needed by the > application, framework, tool or product. > 1 such example would be to be able to supply a Jakarta EE 9 (spec) compliant > implementation of an embedded HTTP server (e.g. Jetty, Tomcat or even > Undertow) used by Geode to bootstrap the embedded HTTP service hosting the > Geode provided Web apps (e.g. Pulse, Management/Admin REST API, Developer > REST API) when external hosting is not an option. Of course, these Web apps > need to be updated as well (to use the new Jakarta EE 9 specs). > There are other examples of SPIs used inn Apache Geode, which are part of the > non-internal, public API. > For example, the > [ServerLaucherCacheProvider|https://geode.apache.org/releases/latest/javadoc/org/apache/geode/distributed/ServerLauncherCacheProvider.html] > interface, with 1 such > [implementation|https://docs.spring.io/spring-data/geode/docs/current/api/org/springframework/data/gemfire/support/SpringServerLauncherCacheProvider.html] > provided by _Spring Data for Apache Geode_ (SDG) even. -- This message was sent by Atlassian Jira (v8.20.1#820001)