Het gebruik van Apache HTTP Server in een Java EE (of Jakarta EE) applicatie, naast andere middleware, gaat niet over het volledig vervangen van de middleware-server, maar over het *ermee* werken ervan. Apache fungeert doorgaans als een *reverse proxy* en/of een *webserver*. Het verwerkt niet rechtstreeks de Java EE-applicatielogica; dat is de taak van de applicatieserver (zoals JBoss, GlassFish, WildFly, Payara, enz.).
Dit is de reden waarom Apache naast een Java EE-applicatieserver kan worden gebruikt:
* Omgekeerde proxy: Apache zit voor de applicatieserver en ontvangt clientverzoeken. Vervolgens kan het deze verzoeken doorsturen naar de juiste applicatieserverinstantie. Dit biedt verschillende voordelen:
* Loadverdeling: Apache kan verzoeken distribueren over meerdere applicatieserverinstanties, waardoor de schaalbaarheid en beschikbaarheid worden verbeterd.
* Beveiliging: Apache kan fungeren als een beveiligingsgateway en SSL/TLS-codering en authenticatie afhandelen voordat verzoeken de applicatieserver bereiken. Dit vermindert de belasting van de applicatieserver en verbetert de veiligheid.
* Caching: Apache kan statische inhoud (afbeeldingen, CSS, JavaScript) in de cache opslaan, waardoor de belasting van de applicatieserver wordt verminderd en de responstijden worden verbeterd.
* URL herschrijven: Apache kan URL's wijzigen voordat ze de applicatieserver bereiken, waardoor schonere URL's en betere SEO mogelijk zijn.
* Bescherming: Het fungeert als buffer en beschermt de applicatieserver tegen directe toegang van buitenaf en mogelijk kwaadaardige verzoeken.
* Statische inhoudsweergave: Apache blinkt uit in het aanbieden van statische inhoud (HTML, afbeeldingen, CSS, JavaScript). Java EE-toepassingsservers zijn over het algemeen beter in het verwerken van dynamische inhoud die door Java-code wordt gegenereerd. Door Apache te gebruiken om statische inhoud aan te bieden, krijgt de applicatieserver meer tijd om zich te concentreren op zijn kerntaken.
Kortom, Apache en een Java EE-applicatieserver vullen elkaar aan. Apache verzorgt extern gerichte taken en optimalisatie, terwijl de Java EE-server de bedrijfslogica en complexe applicatieverwerking beheert. Deze combinatie resulteert in een robuustere, schaalbare en veiligere applicatiearchitectuur. Het is niet een kwestie van ‘in plaats van’, maar van ‘naast’. |