RMI Aufruf und danach Datenbank ?

Status
Nicht offen für weitere Antworten.
D

der_Client

Gast
Hi,


also folgendes ist Für RMI nötig, was mir auch schlüssig ist:

1. Der Server stellt das entfernte Objekt mit der Funktion bereit. Die Funktion läuft im eigenen Adressraum, und der Server leitet Anfragen an diese Funktion weiter.

2. Der Namensdienst (Registry) ist ein Anfragedienst, der Objekte und ihre Methoden mit einem eindeutigen Namen verbindet. Der Server meldet Objekte mit ihren Funktionen bei diesem Namensdienst an.

3. Der Client ist der Nutzer des Dienstes und ruft die Methode auf einem entfernten Objekt auf. Auch er hat einen eigenen Adressraum. Möchte der Client eine Funktion nutzen, so fragt er beim Namensdienst an, um Zugriff zu bekommen.



Also schreibe ich die interface und impl klasse und kann dies dann mit einer geeigneten client-klasse aufrufen.

nur ist mir jetzt unklar wie ich es bewerkstelligen muss, wenn ich einen datenbank-aufruf via JDBC einbinden will?
(der aufbau einer datenbank-connection ist mir ebenfalls klar... es geht eher um die verknüpfung von:

clientaufruf --> vom server bereitgestellte methode --> datenbankeintrag)

z.B.:

wenn ich mit dem client zwei parameter übergebe, die dann via weiterleitung auf der serverseite ausgewertet werden..... das ergebnis etc. soll nun in eine datenbank geschrieben werden, oder zur auswertung der methode muss etwas aus der datenbank ausgelesen werden etc.


muss ich das dann in der impl-klasse bzw. in der dort implementierten methode eintragen? und wenn ja wie?



grüße :wink:
 
T

tuxedo

Gast
Kann es sein dass du viel zu kompliziert denkst?

Wenn du RMI-Serverseitig eine DB benutzen willst dann hast du da ja Schreib und Lese-methoden für die DB.. Eben irgendwelche Getter und Setter die Daten in die DB reinschieben und wieder auslesen.

Und diese Methoden stellst du in deinem Serverobjekt via RMI den Clients zur Verfügung. Fertig. Wo ist da das Problem?
 
D

der_client

Gast
ich glaube dann denke ich richtig, nur drück ich mich etwas verwirrt aus :autsch:


also im prinzip greift der client eben auf die server-methoden (in der Impl-Klasse) zu, welche dann wiederrum auf die DB zugreifen?
 
T

tuxedo

Gast
Jepp. Und nochmal anders ausgedrückt:

Der Client greift im Namen des Servers auf die Methoden zu. D.h. die Servermethoden, die via RMI bereitgestellt werden, laufen nicht im Kontext des Clients, sondern im Kontext des Servers.

Im Fall eines DB Zugriffs wäre es ja auch blödsinnig beim Client den DB-Zugriff via JDBC zu konfigurieren.

- Alex
 
D

der_Client

Gast
ja, dass nicht der client den jdbc zugriff ausführt war mir klar...


in dem fall muss aber die impl-klasse eine verbindung zur DB aufbauen können und die methoden via RMI bereitstellen können?

...dient also quasi als "Verbindungsstück".
 
T

tuxedo

Gast
Je nachdem wie du das ganze verschachtelt und in verschiedene Programmlayer eingeteilt hast: Ja.

Der Server dem die Methode gehört muss die DB-Verbindung kennen und können. Den RMI-Client geht das alles nix an. Der ruft den Krempel nur auf. Deshalb ja auch "Remote Method Invocation".
 
D

der_Client

Gast
genau.

soweit hab ich das ja auch verstanden :D

der client ruft die methode auf. RMI.


bvm2001.gif%20



das wäre in diesem bild der untere teil (nicht identisch da dort mehrere clients sind, aber vom prinzip her)


jetzt muss aber der server die datenbank abfragen. --->

Der Server dem die Methode gehört muss die DB-Verbindung kennen und können.


und genau da fehlt mir noch der zusammenhang wie das zustande kommt.

die DB-Connection muss ja nur einmal hergestellt werden, oder?
 
T

tuxedo

Gast
der_Client hat gesagt.:
und genau da fehlt mir noch der zusammenhang wie das zustande kommt.

die DB-Connection muss ja nur einmal hergestellt werden, oder?

Haben wir hier je was anderes behauptet? Wann, wie und wo die Verbindung zur Db hergestellt wird ist Sache des Entwicklers vom Server, und hat im übrigen nix mit RMI zu tun.

Aber das gängige Verfahren wird wohl sein:

- Server startet
- Server baut Verbindung zur DB auf und hält diese
- Client verbindet sich mit Server und bekommt ein Serverobjekt
- Client macht über Methode X des Server-Objekts irgendwas über n-Ecken mit der Datenbank (in Methode X muss nicht sofort ein SQL-Statement stehen. Das ganze kann auch über die verschiedenen Schichten des Servermoodells vom "Network-Layer" hinüber zum "Database-Layer" geleitet werden, und erst in einer tief vergrabenen Methode im Database-Layer wird die DB angesprochen)
- Server wird irgendwann mal herunter gefahren: Zuvor werden RMI-Verbindungen zu den Clients gekappt und die DB-Verbindung geschlossen.

Ich denke damit wäre jetzt alles gesagt. Noch detailierter und genauer kann ichs nicht beschreiben. Bau dir ein HelloWorld-RMI-Beispiel, dann wirst du's selbst feststellen.

Gruß Alex
 
D

der_geläuterte_Client

Gast
perfekt. :idea:


nur das wollte ich wissen, vielen dank :D
 
T

tuxedo

Gast
Das ganze ist eine Designfrage: Du kannst den Server auch so gestalten dass für jeden angedcokten RMI-Client eine DB-Verbindung aufgebaut wird.. Oder noch mal anders: Dass für jede DB Anfrage eine Verbindung aufgebaut und danach wieder beendet wird.

Kommt halt drauf an wie du dein Programm haben willst. Fakt ist und bleibt aber dass der Server die Verbindung regelt (bzw. regeln sollte).

- Alex
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M SocketError bei Aufruf eines SOAP-Servers Netzwerkprogrammierung 8
L30nS RMI Aufruf einer Client-Methode von einem RMI-Server Netzwerkprogrammierung 3
OnDemand API Aufruf besser steuern, wie Fehler vermeiden Netzwerkprogrammierung 20
B Daten an Javaprogramm per URI Aufruf übergeben Netzwerkprogrammierung 7
J API Aufruf mit GET Request und HMAC Netzwerkprogrammierung 3
P RMI - Neue eigene Instanz für jeden Aufruf auf nicht serialisierbares Objekt - wie? Netzwerkprogrammierung 0
C ObjectInputReader wirft beim zweiten Aufruf eine Exception Netzwerkprogrammierung 3
eLogic Internetseiten-Aufruf simulieren Netzwerkprogrammierung 16
Dit_ RMI RMI-Server und gleichzeitiger Aufruf einer Methode Netzwerkprogrammierung 14
G RMI Server starten - rmiregistry Aufruf? Netzwerkprogrammierung 17
C RMI: Problem beim Aufruf einer Methode. Falsch gecastet? Netzwerkprogrammierung 8
reibi Proxy macht Problem abeim URL-Aufruf Netzwerkprogrammierung 3
B Servlet URL aufruf Netzwerkprogrammierung 4
B Url aufruf über Proxy Netzwerkprogrammierung 2
B HTML mit Webserver und Datenbank verbinden Netzwerkprogrammierung 2
JavaWolf165 Mini-Datenbank durch Link Netzwerkprogrammierung 6
S Client Anwendung mit zentraler SQL-Datenbank Netzwerkprogrammierung 3
F String in Datenbank speichern Netzwerkprogrammierung 1
P RMI Threads die über RMI auf Datenbank zugreifen Netzwerkprogrammierung 2
N Client-Server-Datenbank Netzwerkprogrammierung 13
E Verbindung zu SQL-Datenbank auf einem Server Netzwerkprogrammierung 13
X SSH Verbindung zu Remote Datenbank Netzwerkprogrammierung 2
A HTTP Binärdaten über PHP-Skript in Datenbank schreiben bzw auslesen Netzwerkprogrammierung 2
G DDD Datenbank Schema Netzwerkprogrammierung 2
F HTTP Highscore Datenbank (Java <-> PHP) Netzwerkprogrammierung 17
U Allgemeiner Ratschlag zu meinem Programmunterfangen mit zentraler Datenbank Netzwerkprogrammierung 12
D Content einer email in sql-datenbank speichern Netzwerkprogrammierung 9
M RMI direkte Verbindung mit einer Mysql datenbank Netzwerkprogrammierung 13
N RMI und Datenbank Objekte Netzwerkprogrammierung 3
P Praktikumsarbeit: Zugriff Active Directory/Server/Datenbank Netzwerkprogrammierung 15
P Massen emails verschicken an Kunden die in Datenbank sind Netzwerkprogrammierung 4
K Datenbank-anbidung ueber php Netzwerkprogrammierung 3
A Zugriff auf Inet Datenbank? Netzwerkprogrammierung 4
O Anfragen an Online-Datenbank stellen, z.b. wetter.com Netzwerkprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben