Hallo liebe Community,
ich möchte folgendes Beispiel mit Gui Aktualisieren ausführen, aber die Gui Update Methode funktioniert irgendwie nicht und ich kann nicht mehr als ein Client aufmachen. Hat jemand eine Idee, wie ich das Ding zum laufen bekomme?
Vielen Dank im Voraus.
ich möchte folgendes Beispiel mit Gui Aktualisieren ausführen, aber die Gui Update Methode funktioniert irgendwie nicht und ich kann nicht mehr als ein Client aufmachen. Hat jemand eine Idee, wie ich das Ding zum laufen bekomme?
Vielen Dank im Voraus.
Java:
package observerRMIBsp4;
import java.io.Serializable;
import java.rmi.RMISecurityManager;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import java.util.Date;
import java.util.Observable;
import java.util.Observer;
public class RmiServer extends Observable implements RmiService {
@Override
public void addObserver(RemoteObserver o) throws RemoteException {
WrappedObserver mo = new WrappedObserver(o);
addObserver(mo);
System.out.println("Added observer:" + mo);
}
Thread thread = new Thread() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(5 * 1000);
} catch (InterruptedException e) {
}
setChanged();
notifyObservers(new Date());
}
};
};
public RmiServer() {
thread.start();
}
private static final long serialVersionUID = 1L;
public static void main(String[] args) {
try {
Registry rmiRegistry = LocateRegistry.createRegistry(9999);
RmiService rmiService = (RmiService) UnicastRemoteObject
.exportObject(new RmiServer(), 9999);
rmiRegistry.bind("RmiService", rmiService);
System.out.println("server gestartet");
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
Java:
package observerRMIBsp4;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.io.Serializable;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.Observable;
import java.util.Observer;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JLabel;
public class ClientGui extends JFrame implements RemoteObserver, Serializable {
private JPanel contentPane;
JLabel lblNewLabel;
static RmiClient r;
static ClientGui client;
/**
* Launch the application.
*/
public static void main(String[] args) {
client = new ClientGui();
try {
RmiService remoteService = (RmiService) Naming.lookup("//localhost:9999/RmiService");
UnicastRemoteObject.exportObject(client, 1099);
} catch (MalformedURLException e1) {
e1.printStackTrace();
} catch (RemoteException e1) {
e1.printStackTrace();
} catch (NotBoundException e1) {
e1.printStackTrace();
}
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
client = new ClientGui();
client.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public ClientGui() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
lblNewLabel = new JLabel();
lblNewLabel.setBounds(125, 49, 252, 84);
contentPane.add(lblNewLabel);
set("Hallo1");
}
public void set(String h){
lblNewLabel.setText(h);
System.out.println("h");
}
@Override
public void update(Object observable, Object updateMsg)
throws RemoteException {
set("got message: "+updateMsg);
System.out.println("got message:" + updateMsg);
}
}
Java:
package observerRMIBsp4;
import java.io.Serializable;
import java.rmi.RemoteException;
import java.util.Observable;
import java.util.Observer;
class WrappedObserver implements Observer, Serializable {
private static final long serialVersionUID = 1L;
private RemoteObserver ro = null;
public WrappedObserver(RemoteObserver ro) {
this.ro = ro;
}
@Override
public void update(Observable o, Object arg) {
try {
ro.update(o.toString(), arg);
} catch (RemoteException e) {
System.out
.println("Remote Exception Observer wurde gelöscht:" + this);
o.deleteObserver(this);
}
}
}
Java:
package observerRMIBsp4;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface RmiService extends Remote {
void addObserver(RemoteObserver o) throws RemoteException;
}
Java:
package observerRMIBsp4;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface RemoteObserver extends Remote {
void update(Object observable, Object updateMsg) throws RemoteException;
}