Projektaufteilung Client Server

KrisKul

Grünschnabel
Hallo,

kann man eine JavaSE Anwendeung, das heißt diese JAR soll nur das FrontEnd darstellen und nur Swing Komponenten enthalten. Die Geschäftslogik soll über einen ApplikationServer laufen.
Die Idee ist beim Aufruf einer Webseite, bzw. Datei eine Swingoberfläche zu starten, die auf den Server zugreift.
 
Also.
Die Geschäftslogik soll über den ApplikationServer laufen. Sprich die Auswertung der Daten sowie das Speichern dieser in eine Datnbank.
Ein Rechner im Netzwerk soll nicht über den Webbrowser auf den ApplikationServer zugreiffen sonder über ein Programm, dass aus SwingElementen besteht.
 
Ob das funktioniert und wie man das realisiert. Denn die Beans sollen ja nicht in der Jar des Front-Ends sein.
 
Ja das funktioniert. Die Schnittstellen zwischen Client und Server müssen dann in ein JAR, das Client UND Server verwenden. Dann kann der Client in ein Client JAR und der Server vermutlich in ein WAR File oder halt ein OSGi fähiges JAR.

Für die Kommunikation bietet sich zwischen Javaprogrammen RMI, Hessian oder Burlap an. Hier ist ein kleines Beispielprojekt das mit Spring und RMI einen Server implementiert und 3 Clients (Swing, Web, Bot). Die Folien, von denen in der Anmerkungen Code.txt die Rede ist, findest du hier. Wichtig sind die Folien ab 24.

REINHAUN!
 
Wenn ein Java-Client auf einen Application-Server zugreifen soll, dann braucht der Client nur die Entities und Zugriff auf den Server, damit er über einen InitialContext auf die EJBs zugreifen kann.

Also im Grunde genau so, als würde man von einem Servlet drauf zugreifen.

Grüße
Semour
 
Eigentlich wurde schon alles gesagt was die Vorgehensweise betrifft. Wenn Client und Server auf verschiedenen Rechnern laufen spricht man von einer verteilten Anwendung.
Ich würde mich nur zunächst fragen welche Technologien ich einsetzen möchte, denn es gibt mehrere Möglichkeiten eine verteilte Anwendung zu entwickeln. Um einige zu nennen:

1) Du schreibst den Server selbst mit oder ohne zuhilfenahme von Spring. Da liefert dir das von Oliver gepostete Beispiel echt gute Anregungen. Der Vorteil ist: Du brauchst nichtmal einen Webserver und Spring exportiert dir deine Services sehr schön als RMI,... -Service. Nachteil sind hier Firewalls, die meist brav die Ports blocken die zur Kommunikation notwendig sind. Wenn sich Client und Server im gleichen internen Netz befinden ist das nicht sonderlich tragisch (man kann ja so einiges freigeben) aber bei nem Aufruf über Internet kann das schon witziger werden. Vielleicht bin ich doof aber ich habe es noch nicht geschafft eine sichere Firewall so einzurichten dass eine wirklich entfernte Kommunikation über RMI möglich gewesen wäre.

2) Du nutzt EJBs und sprichst deine entfernten EJBs die irgendwo auf nem Application-Server laufen über ihre Remote-Interface an, diese Kommunizieren aber auch über RMI sodass rein vom Kommunikationsmechanismus gesehen kein erkennbarer Mehrwert zu 1) existiert.

3) Du nutzt Webservices zur Kommunikation. Vorteil ist hier dass diese mit http über Port 80 kommunizieren und daher auch durch jede Firewall kommen die Port 80 freigegeben hat. Nachteil: Du brauchst mindestens einen Webserver und es ist wohl nicht ganz so trivial wie 1 und 2 (finde ich zumindest)

In alle 3 Fällen musst du erst Interfaces und DTO (also Datentransferobjekte, sofern deine Anwendung nicht nur simple Basisdatentypen austauscht) entwickeln. Diese musst du in gleicher Form Client und Server zur Verfügung stellen. Der Dienst auf Serverseite implementiert dann das jeweilige Interface und wird vom Client darüber angesprochen.
 

Neue Beiträge

Zurück