# Einsatz von Spring Web Flow und dessen Alternativen



## andy0585 (20. Mai 2010)

Servus,

ich bin gerade dabei, eine Webapplikation mit JSF zu implementieren und habe mir überlegt, ob ich nicht auch gleich Spring Web Fow integrieren soll. Da, wie alle Entscheidungen bzgl. eines Frameworkeinsatzes, dies immer Projektspezifisch erfolgen sollte, wollte ich fragen, welche Gründe Ihr seht, die für bzw. gegen eine Integration Spring Web Flow sprechen könnten? Ich könnte mir vorstellen, dass vor allem die lose Kopplung der View eine Rolle spielen könnte!?

Auch würde mich interessieren, welche Alternativen es für JSF mit Spring gibt!? Alles was ich bisher gefunden habe, war JSF mit Oracle ADF (allerdings sehr "unflexibel" bzw. auf einen bestimmten Applikationsserver abgestimmt/optimiert) und JSF mit JBoss Seam.

Ich hoffe Ihr könnt mir weiterhelfen!!!


----------



## andy0585 (21. Mai 2010)

Kann mir hier keiner weiterhelfen?
Mir geht es vorallem um die "Konkurrenzprodukte" von Spring Web Flow, die Frage nach den Gründen für den Einsatz von SWF kann mal offen bleiben!
Kann ich Oracle ADF und JBoss Seam als Konkurrenzprodukte von SWF ansehen? Was ist mit Induction (Induction | high performance, open source, Java MVC web application framework), VRaptor (V|Raptor - Alta produtividade no Desenvolvimento Web em Java), Google Guice, PicoContainer, Wicket oder Tapestry?


----------



## Rydl (24. Mai 2010)

was ist denn dein problem? deine frage ist einfach schlecht gestellt, du könntest uns genauso gut fragen, was deine lieblingsfarbe ist... 

viele gründe sprechen für und wider jeder technologie. man muss wissen, was man am ende haben will, dann kann man entscheiden, welches werkzeug am besten passt. 
wenn du also fragen willst, welches das beste werkzeug / framework ist, wirst du keine definitive antwort bekommen, da es sie nicht gibt. 
willst du wissen, welches framework für deine web-app am besten geeignet ist, musst du wohl etwas mehr über dein projekt verraten...


----------



## andy0585 (25. Mai 2010)

Sorry, wenn ich mich unverständlich ausgedrückt habe! Ich habe eine bestehende Webanwendung, bestehend aus JSPs, Servlets, Handler und Beans! Nun möchte ich die Anwendung einwenig modernisieren, da gewisse Teile noch mit "Uralt-Techniken" realisiert sind. Um nun ein Refactoring des Frontends zu erreichen, also möglichst viel vom bestehenden zu übernehmen, aber auch neue Komponenten (speziell in Richtung RIA) auf der View zu integrieren, setze ich JSF ein.
In diesem Zuge bin ich gerade an der Überlegung, auch gleich Spring Web Flow oder ein ähnliches Framework zu integrieren, um etwas mehr Ordnung in die Servlets, ... zu bringen. Ich sehe hier vorallem den Vorteil, dass Spring einfach zu erweitern ist, bspw. um Spring Security, ..., und damit später sehr nützlich sein kann. Allerdings habe ich auch Bedenken, dass Spring eben nicht das "einfachste" Framework ist, das man mal ebenso in seine Anwendung integriert!
Was haltet ihr von der Entscheidung, bzw. seht ihr mögliche Alternativen zu SWF?
Sollte weiterhin noch nicht ganz klar sein, was mein Problem ist, bitte nochmals kurz melden! Schonmal vielen DANK!!!


----------



## klarkimming (27. Mai 2010)

Hallo,

du solltest dir als Alternative zu JSF vielleicht mal Spring MVC ansehen. In Verbindung mit AJAX und JQuery kann man damit sehr gute Ergebnisse erzielen.

Anmerkung zu JSF:

JSF ist ein Komponenten basiertes Framework und hat damit ein deutlich anderen Ansatz als die meisten alten Servlet und JSP Anwendungen. Reine Webentwickler haben meist einige Probleme bei der Umstellung auf JSF...

Du solltest falls du JSF benutzt die akutellste Version verwenden, da dort erhebliche Fortschritte erzielt worden sind.

Anmerkung zu Spring Web Flow und JSF

Aus eigener schmerzhafter Erfahrung wuerde ich dir raten nicht mehrere dir unbekannte Technologien gleichzeitig einzusetzen.


----------



## andy0585 (27. Mai 2010)

klarkimming hat gesagt.:


> du solltest dir als Alternative zu JSF vielleicht mal Spring MVC ansehen. In Verbindung mit AJAX und JQuery kann man damit sehr gute Ergebnisse erzielen.


Da geb ich dir Recht, allerdings musst du bei Verwendung von AJAX und JQuery zusätzlich mit JavaScript arbeiten und AJAX direkt verwenden. Wenn du JSF verwendest und bspw. ein Framework wie Oracle ADF oder RichFaces einsetzt, verwendest du in der View direkt nur eine Technologie, der Rest wird generiert und du musst dich nicht mit JS- oder AJAX-Kleinigkeiten rumschlagen! (Natürlich mit dem Nachteil, dass du das generierte JS nicht beeinflussen kannst!)



klarkimming hat gesagt.:


> Anmerkung zu JSF:
> 
> JSF ist ein Komponenten basiertes Framework und hat damit ein deutlich anderen Ansatz als die meisten alten Servlet und JSP Anwendungen. Reine Webentwickler haben meist einige Probleme bei der Umstellung auf JSF...
> 
> Du solltest falls du JSF benutzt die akutellste Version verwenden, da dort erhebliche Fortschritte erzielt worden sind.


Ist schon richtig, aber ich sehe kein Problem darin, ein paar JSF-Tags in ne JSP einzubinden (NUR auf die View bezogen!) Um die Umstellung im Bereich M und C zu erleichtern, dachte ich eben an Spring Web Flow!



klarkimming hat gesagt.:


> Du solltest falls du JSF benutzt die akutellste Version verwenden, da dort erhebliche Fortschritte erzielt worden sind.


Geb ich dir Recht!



klarkimming hat gesagt.:


> Anmerkung zu Spring Web Flow und JSF
> 
> Aus eigener schmerzhafter Erfahrung wuerde ich dir raten nicht mehrere dir unbekannte Technologien gleichzeitig einzusetzen.


JSF ist mir nicht unbekannt, neu wäre eben nur Spring!


----------



## JanHH (28. Mai 2010)

Also zu seam sei zu sagen, dass es zwar enorm leisungsfähig ist und ich persönlich es sehr toll finde, es einen aber auch dazu zwingt, sich ziemlich rigide an bestimme, festgelegte Strukturen zu halten. Wenn man eine Anwendung von Grund auf neu baut, oder nur Entity-Klassen übernimmt, oder sowas, oder es sich eh schon um eine EJB-Anwendung handelte, ist seam sicherlich grossartig. So wie Du es beschreibst klingt es aber so, als wäre das meiste eh schon vorhanden, und das liesse sich dann sicher eher schwierig integrieren. Aber mit JSF bist Du ja eh schon am tun, das spricht wiederum für seam. Im Grunde ist mein Rat, entscheide Dich für ein halbwegs zukunftssichere Technologie, bau gegebenenfalls lieber etwas mehr von der bestehenden Anwendung um, so dass Du ein sauberes, neues System auf basis moderner Technologien erhältst, und dann ist erstmal gut.


----------



## maki (28. Mai 2010)

> ein paar JSF-Tags in ne JSP einzubinden


Wenn du schon JSF nimmst, dann bitte nur die aktuelle 2.0 Version, und JSP ist out, Facelets sind jetzt in.


----------



## andy0585 (28. Mai 2010)

maki hat gesagt.:


> Wenn du schon JSF nimmst, dann bitte nur die aktuelle 2.0 Version, und JSP ist out, Facelets sind jetzt in.


Muss ich dir Recht geben, allerdings müsste ich ja alle View-Seiten neu schreiben, wenn ich Faclets verwende und leider fehlt mir momentan die Zeit dazu, deshalb noch die alten aber bestehenden JSPs! Auf Dauer gesehen würde ich natürlich auf Facelets setzen!

Oder gibt es eine Möglichkeit Facelets und JSPs zu kombinieren? - Wüsste ich nämlich nicht!??


----------



## maki (28. Mai 2010)

Wieso kombinieren, wenn Sun JSPs für tot erklärt hat? 

Schon klar dass du jetzt nciht alles neuschreiben willst, aber eine Mischung wäre wohl das schlechteste aus beiden Welten.


----------



## andy0585 (29. Mai 2010)

maki hat gesagt.:


> Wieso kombinieren, wenn Sun JSPs für tot erklärt hat?


Hab ich bisher noch nicht gehört, hast du irgendwelche Quellen dafür?



maki hat gesagt.:


> Schon klar dass du jetzt nciht alles neuschreiben willst, aber eine Mischung wäre wohl das schlechteste aus beiden Welten.


Welche Alternative bzw. Lösung würdest du vorschlagen?


----------



## maki (29. Mai 2010)

> Hab ich bisher noch nicht gehört, hast du irgendwelche Quellen dafür?


Sieh dir doch mal irgendeine Ankündigung für JSF 2.0 an, da wird dann meist groß & breit darauf hingewiesen dass die neue Standardtechnologie für die View Facelets sind, nicht JSP, auch steht meist dabei, dass man mit JSP keine bzw. nicht alle Features von JSF 2.0 nutzen kann.

Hier ein einziges Beispiel, das offizielle JEE Facelets Tutorial:
Introduction to Facelets - The Java EE 6 Tutorial, Volume I
Da steht doch wirklich:


> ...
> JavaServer PagesTM (JSPTM) technology, previously used as the presentation technology for JavaServer Faces, does not support all of the new features available in JavaServer Faces 2.0. JSP is considered as a deprecated presentation technology for JavaServer Faces 2.0.





> Welche Alternative bzw. Lösung würdest du vorschlagen?


Wieso, ich dachte du hättest schon eine Lösung die für dich ok ist.
Wenn du umstellen willst, wären Facelets wohl angebracht


----------



## JanHH (30. Mai 2010)

Also JSF-Seiten, die mit JSPs realisiert sind, zu facelets-Seiten zu verwandeln, ist eigentlich trivial (sofern sie keine JSP-scriplets und ähnlichen Schweinkram enthalten). Die Struktur und Syntax der JSF-Tags ist identisch, die Seiten sehen genauso aus, sie heissen nur ".xhtml" statt "jsp" und man muss nur den bestehenden Kram von einem ui:composition-Tag, welches die Seite einleitet und beendet, umschliessen lassen. Es ist quasi nur copy+paste.

Ein Wort noch zu JSF 2.0: Sicherlich erheblich besser als JSF 1.2, allerdings basiert seam noch auf JSF 1.2, und JSF 2.0 ist ziemlich exakt das, was JSF 1.2 in Zusammenspiel mit seam ist. Seam dürfte da die entscheidende Inspirationsquelle gewesen sein. Daher, wenn man seam benutzt, spricht nichts gegen JSF 1.2, im Gegenteil, es ist halt die Version, die da momentan standardmässig Verwendung findet. Die ganzen Mängel, die in JSF 2.0 behoben werden, behebt seam ebenso. Also keine Scheu vor der "alten" Versionsnummer.


----------



## andy0585 (1. Jun 2010)

JanHH hat gesagt.:


> Also JSF-Seiten, die mit JSPs realisiert sind, zu facelets-Seiten zu verwandeln, ist eigentlich trivial (sofern sie keine JSP-scriplets und ähnlichen Schweinkram enthalten). Die Struktur und Syntax der JSF-Tags ist identisch, die Seiten sehen genauso aus, sie heissen nur ".xhtml" statt "jsp" und man muss nur den bestehenden Kram von einem ui:composition-Tag, welches die Seite einleitet und beendet, umschliessen lassen. Es ist quasi nur copy+paste.


Klingt ja recht simpel, werd ich mir mal genauer anschauen! Hab teilweise aber auch Scriptlets mit in den JSPs, die ich dann aber vorher beseitigen sollte. (Wäre sowieso mal fällig! ;-))



JanHH hat gesagt.:


> Ein Wort noch zu JSF 2.0: Sicherlich erheblich besser als JSF 1.2, allerdings basiert seam noch auf JSF 1.2, und JSF 2.0 ist ziemlich exakt das, was JSF 1.2 in Zusammenspiel mit seam ist. Seam dürfte da die entscheidende Inspirationsquelle gewesen sein. Daher, wenn man seam benutzt, spricht nichts gegen JSF 1.2, im Gegenteil, es ist halt die Version, die da momentan standardmässig Verwendung findet. Die ganzen Mängel, die in JSF 2.0 behoben werden, behebt seam ebenso. Also keine Scheu vor der "alten" Versionsnummer.


Trifft das damit auch auf Spring Web Flow zu?


----------



## JanHH (2. Jun 2010)

Keine Ahnung, aber ich vermute stark, nein. seam ist schon sehr auf JSF spezialisiert, Spring wohl eher nicht ;-).

Scriptlets in JSF-Seiten sind bäh, ja.. die Funktionalität sollte in die zugrundeliegenden Session-Beans ausgelagert werden.

Mit seam ist das wirklich alles sehr schön: Eine absolut klare Struktur der Anwendung  (JSF-view -> Session-Beans -> Mode-Beans), quasi null Konfiguration per xml mehr (Stichwort faces-config), sondern alles im Java-Code übersichtlich mit Annotationen. Alles mehr oder weniger redundante fällt weg, man kann sich komplett auf die Funktionalität der Anwendung konzentrierenn.


----------

