[ 
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 with _Java's_ 
{{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.  A proper SPI affords any application, framework, tool or product a 
degree of extensibility and flexibility, applied by 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 in 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 with _Java's_ 
{{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 in 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: Sub-task
>            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 with _Java's_ 
> {{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.  A proper SPI affords any application, framework, tool or product a 
> degree of extensibility and flexibility, applied by 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 in 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.7#820007)

Reply via email to