Wie Projekt aufsetzen für restful und jsf

Hi,
Ich muss ein Projekt mit jsf realisieren möchte aber flexibel bleiben. Sprich als Frontend könnten noch weitere Projekte (apps) dazu kommen.

Daher hätte ich versucht zuerst einen Restful Service zu erstellen. Auf diesen greift, dann die JSF Applikation zu. Hört sich für mich aber ein bisschen komisch an. Eine andere Möglichkeit wäre auch, dass der RestfulService und die JSF Applikation die gleiche Serviceschicht verwenden.

Was würdet ihr hier machen?

ich würde deinen 1. Schritt machen, jedoch weiß ich nicht ob ich auf JSF setzen würde
Gerade wenn du eine REST API hast kannst du ja eine einfache Schicht nehmen und z.B. auf Polymer Setzen.
Dann brauchst du für das Frontend keinen Appserver sonder nen normaler dummer Webserver tuts auch (oder auch andere einfache Webframeworks)

1 „Gefällt mir“

Von einer JSF-App auf eine REST-App zuzugreifen hört sich zumindest spannend an. :slight_smile: Das kann natürlich Sinn haben, wenn man nur JSF kann und/oder die UI von der eigentlichen API trennen möchte.

Wenn Du JSF bevorzugst, kannst Du auch einfach JSF mit einbinden und zusätzlich für andere Clients eine REST-API bereitstellen.

Das heißt ich rufe dann in meiner JSF App. per HttpClient Klasse den RestFulService auf oder?

So könntest Du das machen. Die Frage ist nur, warum Du dann die UI nicht mit in die App integrierst?

Nur mal eine kleine Annahme basierend auf einem JEE-Stack, wobei man über die Details streiten kann.

Businesslogik kommt in EJBs.

Für die Rest-Schnittstelle Jax-rs, welches per DI die nötigen EJBs bekommt und dann eben die entsprechenden Methoden aufruft und dann z.B. Json oder XML zurückliefert.

  1. Im selben Projekt/war könnte dann auch eine JSF-Anwendung liegen, die ebenfalls auf die EJBs zugreift und dann html zurückgibt.

  2. In einem anderen Projekt/war liegt die JSF-Anwendung.
    a. dann könnte man via HttpClient auf die Rest-Schnittstelle zugreifen.
    b. die EJBs via @Remote direkt aufrufen, und sich die ganzen Umwandlungen sparen, die mit Rest einhergehen.

  3. Komplett auf JSF verzichten und via JavaScript auf die Rest-Schnittstelle zugreifen und dort dann das UI generieren.

Alle drei Punkte haben so ihre Vor- und Nachteile.

  1. ist wohl am leichtesten zu implementieren.
    2a. bietet die größte Flexibilität, hat allerdings auch den größeren Overhead.
    2b. beschränkt einen bei der Rest-Schnittstelle auf JEE
  2. moderne Lösung die mehr und mehr genutzt wird, größte Flexibilität, benötigt aber JavaScript.

der Vorteil wenn alle über die gleiche REST API auf dein Backend zugreifen ist, dass du genau weißt wie auf dein Backend zugegriffen wird.
Wenn das Webfrontend andere Wege hat, dann kommst du später schnell in das Problem dass die Webfrontend Jungs “komische” Wege gegangen sind um an Daten zu kommen.
Ich habs in vielen Projekten gehabt dass es hieß “Ja das Webfrontend hat das doch schon, warum ihr Mobile Apps nicht” aber das lag halt daran dass die hintenrum ins Backend sind und nicht über die öffentliche API

Das ist wirklich ein guter Punkt. Danke euch.
Wird wohl entweder 2a oder 2b werden.