java-forum.org - Java programmieren aus Leidenschaft
Java 6 Einstieg und professioneller Einsatz
Alter Preis: 34,90 EUR
Jetzt: 0,00 EUR

zzgl. Versandkosten

Zurück   java-forum.org - Java programmieren aus Leidenschaft > Blogs > Java Snippets

Eine Sammlung von nützlichen Code-Schnipseln
Bewerten

Snippet: RMI minimal

"Snippet: RMI minimal" bei Mister Wong speichern "Snippet: RMI minimal" bei YiGG.de speichern "Snippet: RMI minimal" bei Google speichern "Snippet: RMI minimal" bei del.icio.us speichern
Veröffentlicht: 26.02.2009 um 08:57 von tfa
Aktualisiert: 20.03.2009 um 07:36 von tfa
Stichworte client , remoting , rmi , server

  • RMI bedeutet Remote Method Invocation und dient dazu, auf einem Server implementierte Methoden Clients zur Benutzung Verfügbar zu machen.
  • Voraussetzung ist JDK 1.5. RMI funktioniert zwar auch mit älteren Java-Versionen, ist da aber sehr umständlich.
  • Zuerst Service-Interface definieren.
  • Danach Server implementieren und starten.
  • RMI-Tutorial bei Sun

Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.rmi.Remote;
import java.rmi.RemoteException;
 
/**
 * Das Service-Interface.
 * Hier definierte Methoden werden im Server implementiert
 * und können von Clients aufgerufen werden.
 */
public interface Service extends Remote {
 
    /** 
     * Dreht den übergebenen String um 
     */
    public String reverse(String input) throws RemoteException;
}

Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
 
/**
 * Implementierung des Service auf Serverseite
 */
public class Server extends UnicastRemoteObject implements Service {
 
    protected Server() throws RemoteException {
        super();
    }
 
    /** Dreht den übergebenen String um */
    public String reverse(String input) {
        StringBuilder sb = new StringBuilder();
        for (char c : input.toCharArray()) {
            sb.insert(0, c);
        }
        return sb.toString();
    }
 
    public static void main(String... args) throws Exception {
        // RMI-Registry starten, Server erzeugen und an Registry binden
        // Standard-Port ist 1099 (Registry.REGISTRY_PORT)
        
        LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
        Registry registry = LocateRegistry.getRegistry(Registry.REGISTRY_PORT);
        registry.rebind("PalindromService", new Server());
        System.out.println("Server läuft...");
    }
}

Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.rmi.Naming;
 
/**
 * Client-Klasse zum Aufruf des RMI-Service.
 */
public class Client {
 
    public static void main(String... args) throws Exception {
        Service service = (Service) Naming.lookup("rmi://127.0.0.1/PalindromService");
 
        String palindrom = "Geist ziert Leben, Mut hegt Siege, Beileid trägt belegbare Reue, "
            + "Neid dient nie, nun eint Neid die Neuerer, abgelebt gärt die Liebe, "
            + "Geist geht, umnebelt reizt Sieg.";
 
        String res = service.reverse(palindrom);
        System.out.println(res);
    }
}
Kategorie: Remoting
Hits 1676 Kommentare 3
« Zurück     Startseite des Blogs     Nächste »
Kommentare 3

Kommentare

  1. Alter Kommentar
    Das funktioniert in der Praxis so nicht. Erst recht nicht, wenn man die Klasse Client und Server in verschiedene packages aufteilt und in JARs verpackt.
    permalink
    Veröffentlicht: 04.10.2010 um 22:43 von supergrobi supergrobi ist offline
  2. Alter Kommentar
    Benutzerbild von tfa
    Dieses Minimal-Beispiel funktioniert. Es soll nur das grundsätzliche Prinzip von RMI zeigen. WIe du deine Anwendung in JARs verpackst und Client bzw. Server deployst ist eine ganz andere Frage.
    permalink
    Veröffentlicht: 08.10.2010 um 11:58 von tfa tfa ist offline
  3. Alter Kommentar
    Benutzerbild von Dit_
    zu reverse()

    Java Code: Quelltext in neuem Fenster öffnen
    1
    2
    
    StringBuilder sb = new StringBuilder(string);
    sb.reverse().toString();
    permalink
    Veröffentlicht: 08.03.2011 um 18:33 von Dit_ Dit_ ist offline
 

Alle Zeitangaben in WEZ +1. Es ist jetzt 23:05 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de