Spring oder JBoss?

Transmitter

Erfahrenes Mitglied
Hi,

ich plane gerade ein Projekt mit folgenden Anforderungen:

- Flexibler Client (Swing, Browser, ...) der mit der business logic ausschließlich über SOAP kommuniziert.
- im Backend brauche ich: Sessions, Authentication, Input Validation
- Daten werden in PostgreSQL gespeichert
- Der Server / das Backend soll mit 99,9%iger Sicherheit nicht verteilt werden - evtl. wird die DB auf einen extra Server ausgelagert
- Back- und Frontend KÖNNEN auf dem gleichen PC laufen, müssen aber nicht.

Da das ganze als Produkt angeboten werden soll, muss es sehr leicht für den Benutzer zu installieren sein (man kennt das ja von MS Office o.ä.).
In JBoss habe ich mich jetzt schon eingelesen. Da würde ich EJB 3 einsetzen.
Allerdings habe ich das Gefühl durch den ApplicationServer einen "leichten" Overhead mitzuschleppen - ich habe auf einem älteren PC zum Starten des JBoss 2:30 min gebraucht.
Jetzt habe ich hier die begeisterten Beiträge zu Spring gelesen und bin am Überlegen, ob ich besser auf Spring setzen sollte?
Was wären denn die Hauptvorteile von Spring gegenüber JBoss bei den von mir genannten Anforderungen?

Danke schon mal
Bye, Transmitter

PS: Noch eine Frage: Da es sich ja bei Spring nicht um einen Server handelt, muss ich mir auch keine Gedanken machen, was im Setup beachtet werden muss, wenn schon eine Spring Installation vorhanden ist, oder? Bei JBoss wäre dann ja schon der Port 8080 belegt und man müsste die ear Datei in den vorhanden Server deployen bzw. einen neuen Server konfigurieren.
 
Zuletzt bearbeitet:
Hallo,

Da das ganze als Produkt angeboten werden soll, muss es sehr leicht für den Benutzer zu installieren sein (man kennt das ja von MS Office o.ä.).
In JBoss habe ich mich jetzt schon eingelesen. Da würde ich EJB 3 einsetzen.
Allerdings habe ich das Gefühl durch den ApplicationServer einen "leichten" Overhead mitzuschleppen - ich habe auf einem älteren PC zum Starten des JBoss 2:30 min gebraucht.
Jetzt habe ich hier die begeisterten Beiträge zu Spring gelesen und bin am Überlegen, ob ich besser auf Spring setzen sollte?
Was wären denn die Hauptvorteile von Spring gegenüber JBoss bei den von mir genannten Anforderungen?

Nun ja, man kann den JBoss ja relativ einfach customizen (zusammenstutzen -> eigene Serverkonfiguration) bis man nur noch die wirklich benötigten, Dienste und Komponenten hat. Dann sollten die JBoss Startzeiten sich erheblich verbessen. Nicht desto trotz benötigt
man für den effektiven JBoss Einsatz relativ viel Know-how was die Entwicklung teilweise realtiv schwierig macht, bzw. verzögert
wenn man das entsprechende Wissen nicht hat.

Spring ist auf den ersten Blick recht einfach und relativ leicht zu druchschauen, beinhaltet aber auch einen nicht zu unterschätzenden
Komplexitätsgrad sobald man etwas schwierigeres machen will. Dafür bekommt man mit Spring jedoch aufgrund von ausgezeichneter Doku, riesiger Community und zahlreichen Third-Party Projekten aber recht schnell Hilfe wenns man irgendwo brennt. Weiterhin zeigt sich meiner Erfahrung nach, dass sich mit Spring relativ leicht hoch flexible hoch konfigurierbare Anwendungen bauen lassen deren Komponenten sich oft sogar noch obendrein sehr einfach wiederverwenden lassen :)

Hier die Vorteile von Spring (bezüglich deiner Punkte) aus meiner Sicht:
- Flexibler Client (Swing, Browser, ...) der mit der business logic ausschließlich über SOAP kommuniziert.
Einfache Konfiguration / Konsumierung der Remote Services ohne händischen Lookup.

- im Backend brauche ich: Sessions, Authentication, Input Validation
http://static.springframework.org/spring/docs/2.0.x/reference/beans.html#beans-factory-scopes
http://www.acegisecurity.org/
http://www.springframework.org/docs/reference/validation.html
(Validierung könnt man auch über einen eigenen ValidationProxy implementieren, ansonsten bietet es sich hier auch an die AOP Integration (Spring AOP, ApsectJ) zu nutzen -> http://today.java.net/pub/a/today/2005/11/08/implementing-validation-rules-with-aspects.html)
http://springcontracts.sourceforge.net/home.html

- Daten werden in PostgreSQL gespeichert
Spring unterstützt zahlreiche Persistenzmechanismen (JDBC, JPA, Hibernate, iBatis, OJB etc.)

- Der Server / das Backend soll mit 99,9%iger Sicherheit nicht verteilt werden -
evtl. wird die DB auf einen extra Server ausgelagert
- Back- und Frontend KÖNNEN auf dem gleichen PC laufen, müssen aber nicht.
Eine Spring basierte Anwendung lässt sich relativ einfach so entwerfen, das der Verteilungsaspekt
eine reine Konfigurationssache ist. (Anstatt auf den eigentlichen Objekten arbeitet man dann beispielsweise
mit entsprechenden Proxies die die einzelnen Methodenaufrufe dann übers Netz an die "eigentlichen" Objekte deligieren).
Weiterhin kann man das Remoting auch ganz deaktivieren in dem Fall, das Client und Server auf dem selben Rechner laufen
sollen -> statt dessen konfiguriert man Spring so, dass Client und Server im selben JVM Prozess laufen. Die "Kommunikation"
erfolgt dann ganz normale über "In-JVM" Methodenaufrufe.


PS: Noch eine Frage: Da es sich ja bei Spring nicht um einen Server handelt, muss ich mir auch keine Gedanken machen, was im Setup beachtet werden muss, wenn schon eine Spring Installation vorhanden ist, oder? Bei JBoss wäre dann ja schon der Port 8080 belegt und man müsste die ear Datei in den vorhanden Server deployen bzw. einen neuen Server konfigurieren.
Also mit Portkonfigurationen musst du auch bei Springanwendungen aufpassen. Du kannst Spring beispielsweise Standalone also auch
innerhalb eines ServletContainers wie Tomcat oder als Komponente (beispielsweise via MBean) im Application Server laufen lassen.

http://www.springframework.org/docs/reference/remoting.html
http://www.tutorials.de/forum/java/236622-webservices-mit-spring-und-axis.html

Gruß Tom
 
Zurück