[ 
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 (specification) 
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 Apache Geode 
provided, internal 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) itself, is highly useful and 
valuable in certain configuration arrangements.

  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.  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 (specification) 
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 Apache Geode 
provided, internal 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 (specification) 
> 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 Apache 
> Geode provided, internal 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) itself, is highly useful 
> and valuable in certain configuration arrangements.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to