Swing + EJB

OlliL

Bekanntes Mitglied
Hallo,

ich möchte gerne Die Business-Logik inkl. DB-Zugriff aus meiner Swing Applikation in EJBs auslagern und auf diese dann mittels Remoting von JBoss zugreifen.

Nun stellt sich mir gerade die Frage, wie man das vom Konzept her entwickeln sollte. Entwickle ich "ein Projekt" in Eclipse wo ich einerseits meine Beans entwickle und andererseits meine Swing-Komponenten oder mache ich daraus zwei Projekte in Eclipse? Ich hab mal letzteres probiert... es geht zwar, aber man hat ja wahnsinnige Code-Redundanz, da sowohl das Interface der EJB Komponente sowie das Businessmodell (z.B. "Kunde") in beiden Projekten vorhalten werden müssen....

Für mich spricht also aktuell alles dafür, das in einem einzigen Projekt in Eclipse zu entwickeln.

Aber - ich habe mal in das deployte JAR geschaut was dem JBoss hingeworfen wird - dort sind (logischerweise) auch alle meine Swing-Client-Objekte enthalten. Was kann ich dagegen unternehmen? Im Grunde müssen auf den JBoss nicht die Client-Objekte, und in den Client müssen nicht die Beans....

Wie stellt man es am sinnvollsten an? Zwei Projekte in Eclipse oder eins? Wie bekomme ich eine Trennschärfe der generierten Strukturen für "Client" und "Server"?
 

Landei

Top Contributor
Du kannst sogar drei Projekte machen, nämlich zusätzlich ein Projekt mit gemeinsam genutzen Interfaces und Business-Logik (aber möglichst ohne Hinweise auf Spring oder EJB), was die erwähnte Redundanz reduzieren würde. Das bindest du in den beiden anderen Projekten als jar ein, voilà...

Du kannst natürlich auch dem BBoM-Pattern folgen...
 

mvitz

Top Contributor
Gegebenfalls sogar drei Projekte:
Projekt 1) Enthält alle Dinge, die du auf Server und Client benötigst.
Projekt 2) Enthält Dinge, die nur auf dem Server benötigt werden und hat eine Abhängigkeit zu Projekt 1
Projekt 3) Enthält Dinge, die nur auf dem Client benötigt werden und hat eine Abhängigkeit zu Projekt 1
 

OlliL

Bekanntes Mitglied
Ah OK - also eins mit den Beans, eins mit dem Client uns eins wo sich quasi die Entitäten (Business-Objekte) wie "Kunde" "Auftrag" "Haus" "Auto" "weiss der Geier" und Interfaces befinden... feine Idee :)
 

OlliL

Bekanntes Mitglied
Ich habe noch ein "Problem" ;)

In meiner Swing Applikation habe ich sagen wir mal 8 Eingabefelder. Diese Felder werden bisher in der Swing Applikation durch Validatoren während der Eingabe und nochmal abschliessend durch den Controller vor der Erzeugung des Businessobjektes validiert.
Diese Validatoren sind eher einzelne Methodensammlungen (validateBirthday(String bDay)) als Objekte. Für jedes Businessobjekt (Customer) gibt es somit auch eine extra Methodensammlung (validateCustomer).

Nun möchte ich EJB einsetzen und dorthin Dinge auslagern/bündeln. Mir widerstrebt es aber etwas aus den Eingaben in Swing das Customer Objekt in Swing zu formen und dem EJB zur Anlage in der DB direkt zu übergeben. Ich fände es besser wenn der EJB eine Validierung der übergebenen Daten vornehmen würde bevor er mit dem Customer Objekt hantiert. Überhaupt fände ich die Validierung in EJB besser aufgehoben da man sie dann für andere GUIs (z.B. Web-GUI) wiederverwenden könnte und sie dort nicht erneut implementieren müsste.

Somit habe ich mir überlegt eine Art Transfer-Objekt zu machen welches nur einfache Datentypen (String, Boolean) enthällt welches sich so z.B. auch in Swing abbilden lassen. Dann fülle ich in meinem Swing-Controller dieses Transfer-Objekt welches dann das eigentliche Business-Objekt "Customer" auf dem Application-Server formt. Validierungen finden dann in diesem Transfer-Objekt statt und führen im Fehlerfall zu einer Exception. Die Validierungsfunktionen des Transfer-Objektes werden in den Setter-Methoden des Transfer-Objektes aufgerufen, aber sind auch public, so das man sie auch bereits in der GUI verwenden kann.

Da stellt sich dann natürlich wieder die Frage, wie sinnvoll es ist während der Eingabe bereits "fachliche" Validierungen mittels EJB vorzunehmen, da das ja auch zu einer gewissen Latenz führt und die Eingabe durch den Anwender als "zäh" gestalten kann. Macht es da Sinn eine zweischichtige Validierung vorzunehmen? also neben den "Transferobjekten" welche im EJB liegen und alle Validierungen vornehmen solche Basis-Validierungen wie "Pflichtfeld", "lässt sich der String in eine Zahl konvertieren?" in dem Client "nochmal" zu programmieren?

Client:
- Dateneingabe
- Basisvalidierung der Daten während Eingabe (Format, Not Null)
- Ablage der Daten in einem Model der View
- Erzeugung der Transferobjekte beim "Speichern" via EJB (ein Überführen des Swing-Models in das Transfermodel)

Server (EJB):
- Detailvalidierung beim erzeugen der Transferobjekte Rückmeldung via Exceptions
- Erzeugen der Businessobjekte
- lesen/schreiben der Businessobjekte via Hibernate von/nach MySQL

Solch ein Transferobjekt würde dann so aussehen:

Java:
public class CustomerTO {
	private Customer customer;
	
	public CustomerTO() {
		customer = new Customer();
	}
	
	
	public void setCustomerID(String cID) {
		validateCustomerID(cID);
		customer.setCustomerID(Integer.parseInt(cID));
	}
	
	public void validateCustomerID(String cID) {
		// hier die Validierung
	}
	
	// weitere Getter + Setter + Validierer
	
	public void addCustomer() {
		// übergabe des internen Customer-Objektes an Hibernate "INSERT"
	}
	
	public void updCustomer() {
		// übergabe des internen Customer-Objektes an Hibernate "UPDATE"
	}

}

Das Business-Objekt:

Java:
public class Customer {
	private int customerID;
	
	public void setCustomerID(int cID) {
		customerID = cID;
	}

	// weitere Getter + Setter 
}



Was haltet Ihr von dem Ansatz bzw. wie würdet Ihr das designen?
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Kochbuch bzw. Rezepte-Datenbank app mit Swing..? Allgemeine Java-Themen 5
I Swing GUI / Webapp..... benötige ein paar Tips / Ratschläge Allgemeine Java-Themen 18
KeTho1712 Java Swing: JTable standardmäßig füllen, sodass bei Start bereits Datensätze gespeichert sind Allgemeine Java-Themen 1
C Swing File[] als klickbare links in irgendeinem Swing Element Allgemeine Java-Themen 3
RalleYTN 2D-Grafik Bild ohne AWT, Swing und JavaFX rotieren Allgemeine Java-Themen 12
T Methoden Swing/Graphics/draw Allgemeine Java-Themen 6
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
N GUI Interface, swing Allgemeine Java-Themen 7
J Swing Cursor.WAIT funktioniert nicht nach JFileChooser Allgemeine Java-Themen 1
V Input/Output Swing Icons in Jar Archiv laden Allgemeine Java-Themen 10
M for Schleife mit Swing Button abbrechen Allgemeine Java-Themen 7
M JavaFX-Gegenstück zu Swing-Button-DoClick-Methode Allgemeine Java-Themen 5
eskimo328 Swing Client Anwendung für MAC OS (Update Routine) Allgemeine Java-Themen 6
T HTTP HttpWebRequest in Swing-Projekt nutzen Allgemeine Java-Themen 4
G Input/Output Manuelle Änderung von Wert in Swing Komponente bemerken! Allgemeine Java-Themen 2
K Threads - Swing - Synchronisation nötig? Allgemeine Java-Themen 8
J [SWING]Elegante Java Formular Lösung? XML? Allgemeine Java-Themen 4
M Swing-Frontend abhängig von ausgewähltem Objekt Allgemeine Java-Themen 4
I Swing Welche Swing Komponente soll ich nehmen? Allgemeine Java-Themen 2
L Web-Framework und Swing Framework o.ä Allgemeine Java-Themen 15
Y Anwendung starten(JAR) - Entscheidung Konsole oder Swing Allgemeine Java-Themen 5
A Swing paintcomponent komischer Fehler Allgemeine Java-Themen 6
algorismi Google maps in Java Swing Allgemeine Java-Themen 2
nrg Swing 2 Fragen zu Swing/AWT Allgemeine Java-Themen 7
T Jakarta Objekt (Excel Sheet) in Swing/SWT einbetten Allgemeine Java-Themen 3
D Organigramm mit GWT oder Swing Allgemeine Java-Themen 4
E Swing hilfe, JWindow mit eintrag in taskleiste Allgemeine Java-Themen 2
M Name der Swing Komponente Allgemeine Java-Themen 3
A awt und swing Allgemeine Java-Themen 3
MQue Swing-Componenten -> JavaBean Allgemeine Java-Themen 5
H Schrifthöhe berechnen / Swing Allgemeine Java-Themen 5
Z Swing vs Konsole Allgemeine Java-Themen 17
T Wo ist javax.swing.TransferHandler enthalten? Allgemeine Java-Themen 10
ARadauer Scaffolding für Swing Anwendungen Allgemeine Java-Themen 4
? Swing Anwendung aus Konsole starten Allgemeine Java-Themen 7
H Webseiten aus Swing Allgemeine Java-Themen 4
B SBCC - Swing Better Components Collection - downloadlink ? Allgemeine Java-Themen 5
G Feld Validierung in Swing Programm Allgemeine Java-Themen 6
G Swing Validierungs Framework Allgemeine Java-Themen 2
A Klappmechanismus bei Components(SWING) Allgemeine Java-Themen 8
M Swing funktioniert und funktioniert nicht Allgemeine Java-Themen 4
O Swing oder JMF Problem Allgemeine Java-Themen 11
M Swing JButton Farbe zurücksetzen Allgemeine Java-Themen 6
P RTF dynamisch machen (IText, Swing) Allgemeine Java-Themen 4
E Thread Fragen in Verbindung mit Swing Allgemeine Java-Themen 4
G java applet mit swing -> hundert prozent cpu auslastung Allgemeine Java-Themen 11
S Swing-Projekt zum Üben Allgemeine Java-Themen 5
I Servlet von einem Swing Based GUI aufrufen Allgemeine Java-Themen 5
D Spezielles Eingabefeld für Numerische Werte in Swing Allgemeine Java-Themen 2
G Swing vs. RCP Allgemeine Java-Themen 9
T substring() und Swing setText() Allgemeine Java-Themen 6
A Hibernate und Swing Allgemeine Java-Themen 2
S SWING Problem Allgemeine Java-Themen 2
S SWING UND AWT!Problem wegen Canvas! Allgemeine Java-Themen 29
clemente Swing Applikation killt kwin Prozess (unter Linux / KDE) Allgemeine Java-Themen 3
T Exception at javax.swing.plaf.basic.BasicTableUI.paintCell Allgemeine Java-Themen 3
S Swing - Problem mit Fenster-/Komponenten-Größe Allgemeine Java-Themen 3
M swing und windows registry Allgemeine Java-Themen 11
A Swing hat ein leicht verändertes Aussehen, wie findet ihrs? Allgemeine Java-Themen 28
M Was soll ich benutzen? Java2D, Java3D, Swing, AWT?? Allgemeine Java-Themen 21
U Frage zu Swing Allgemeine Java-Themen 4
B Hintergrund bei Swing Allgemeine Java-Themen 6
K swing frage (komisches swing) <-- manoman was für n threa Allgemeine Java-Themen 2
J Chatprog schließen,AWT + Swing Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben