RMI - oprettelse af remoteobjekt.
Hej Eksperter;Jeg sidder her og roder med at få oprettet noget RMI i java. Jeg er rimelig grøn i hovedet lige nu, mest fordi jeg kun har mig selv at trække information fra. Og selvfølgelig jer, hvis I kan hjælpe.
Det jeg vil er at lave et Hotelstyringsystem, men først og fremmest vil jeg gerne have lavet en simpel RMI-server og en simpel RMI-Client. Dette er også lykkedes for mig. Nu kommer jeg så til remoteObjekter.
Jeg har lavet en primitiv klasse kaldet person. Denne person har én konstruktør, en getNavn() og en toString(). Nu vil jeg gerne have oprettet et personobjekt fra min Client. Men jeg er gået død i hvordan serveren skal tilbyde person-objektet for min klient.
Jeg har 4 filer:
HmsClient.java
HmsServer.java -> er et interface for:
HmsServerImpl.java -> som er serverimplementationen
person.java -> som er min objektklasse.
HmsClient skal oprette en person via HmsServer og HmsServerImpl.
Min kode indtil nu ser sådan ud:
HMSCLIENT.JAVA:
import java.awt.*;
import java.awt.event.*;
import java.rmi.*;
public class HmsClient {
public HmsClient(String ip) {
getRemoteHms(ip);
}
private void getRemoteHms(String ip) {
try {
String serverObjectName = "//" + ip + "/HmsServer";
HmsServer myhms = (HmsServer) Naming.lookup(serverObjectName);
person pers1 = new myhms.person("Meek", "meek@geek.dk");
System.out.println("getNavn() :"+pers1.getNavn());
System.out.println("toString() :"+pers1.toString());
}
catch (java.rmi.ConnectException ce) {
System.err.println("Connection to server failed. " +
"Server may be temporarily unavailable." );
}
catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
public static void main(String args[]) {
HmsClient HmsClientInstans = new HmsClient("localhost");
}
}
HMSSERVER.JAVA
import java.rmi.*;
public interface HmsServer extends Remote {
// Dette er HmsServeren som tager imod forbindelser fra RMI-klienter
}
HMSSERVERIMPL.JAVA
import java.rmi.*;
import java.rmi.server.*;
import java.util.*;
import java.io.*;
import java.net.*;
public class HmsServerImpl extends UnicastRemoteObject implements HmsServer {
public HmsServerImpl() throws RemoteException {
super();
}
public static void main(String args[]) throws Exception {
System.err.println("Initializing server: please wait.");
HmsServerImpl temp = new HmsServerImpl();
String serverObjectName = "//localhost/HmsServer";
Naming.rebind(serverObjectName, temp);
System.err.println("HmsServeren kører nu på localhost.");
}
}
PERSON.JAVA
public class person {
private String navn;
private String emailadr;
public person(String N, String E) {
navn = N;
emailadr = E;
}
public String getNavn() {
return navn;
}
public String toString() {
return navn + ", " + emailadr;
}
}
Dette er et laangt spørgsmål, som jeg nok spørger videre til -> derfor de mange points..
Meek
