Di RMI (kode sisi klien), bagaimana saya bisa menggunakan peristiwa yang ditentukan dalam kode sisi server?
Misalnya, kode sisi server berikut mendefinisikan acara PropertyChangeSupport
.
Bagaimana cara menerapkannya di sisi klien?
package rmiservice.services.calculator;
import java.beans.PropertyChangeSupport;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.LinkedList;
import java.util.Queue;
public class CalculatorService extends UnicastRemoteObject implements ICalculator {
private Queue<Integer> numbers = new LinkedList<Integer>();
private Integer result;
***private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);***
public CalculatorService() throws RemoteException {
super();
}
public void start() throws Exception {
java.rmi.registry.LocateRegistry.createRegistry(1099);
Naming.bind("CalculatorService", this);
System.out.println("Calculator Service is Run . . .");
}
public void stop() throws Exception {
Naming.unbind("CalculatorService");
UnicastRemoteObject.unexportObject(this, true);
System.out.println("Calculator Service is Stop . . .");
}
//-------------------------------------------------------------------
//------------------------------ Implements ICalculator -------------
public void addNumber(Integer number) throws Exception {
numbers.add(number);
}
public Integer getResult() throws Exception {
return this.result;
}
public void setResult(Integer result) throws Exception {
Integer oldResult = this.getResult();
this.result = result;
***propertyChangeSupport.firePropertyChange("result", oldResult, result);***
}
public void calculate(Operation operation) throws Exception {
Integer _result = 0;
if (numbers.size() < 2)
return;
switch (operation) {
case Add: {
_result = 0;
while (numbers.size() > 0) {
_result += numbers.poll();
}
break;
}
case Substract: {
_result = numbers.poll();
while (numbers.size() > 0) {
_result -= numbers.poll();
}
break;
}
}
this.setResult(_result);
}
//-------------------------------------------------------------------
}