RMI Callbacks - PowerPoint PPT Presentation

1 / 25
About This Presentation
Title:

RMI Callbacks

Description:

hobby = h; public boolean match(Customer c) // local method ... private JList hobbies; private JTextArea result; RMI Callbacks. Server Calls Back the Client ... – PowerPoint PPT presentation

Number of Views:157
Avg rating:3.0/5.0
Slides: 26
Provided by: russell5
Category:
Tags: rmi | callbacks | hobbies

less

Transcript and Presenter's Notes

Title: RMI Callbacks


1
(No Transcript)
2
(No Transcript)
3
(No Transcript)
4
import java.io. public class Customer
implements Serializable public Customer(int
theAge, int theSex, String theHobbies)
age theAge sex theSex hobbies
theHobbies public int getAge() return
age public int getSex() return sex
public boolean hasHobby(String aHobby) if
(aHobby "") return true for (int i 0
i lt hobbies.length i) if
(hobbiesi.equals(aHobby)) return true
return false
5
public void reset() age 0 sex
0 hobbies null public String
toString() String result "Age " age
", Sex " if (sex Product.MALE) result
"Male" else if (sex Product.FEMALE)
result "Female" else result "Male or
Female" result ", Hobbies" for
(int i 0 i lt hobbies.length i)
result " " hobbiesi return result
private int age private int sex
private String hobbies
6
import java.rmi. public interface Product
extends Remote String getDescription() throws
RemoteException static final int MALE 1
static final int FEMALE 2 static final int
BOTH MALE FEMALE
7
import java.rmi. import java.rmi.server. publ
ic class ProductImpl extends
UnicastRemoteObject implements Product
public ProductImpl(String n, int s, int age1, int
age2, String h) throws
RemoteException name n ageLow
age1 ageHigh age2 sex s
hobby h public boolean match(Customer
c) // local method if (c.getAge() lt ageLow
c.getAge() gt ageHigh) return false
if (!c.hasHobby(hobby)) return false
if ((sex c.getSex()) 0) return false
return true
8
public String getDescription() throws
RemoteException return "I am a " name
". Buy me!" private String name
private int ageLow private int ageHigh
private int sex private String hobby
9
import java.awt. import java.awt.event. import
java.io. import java.rmi. import
java.rmi.server. import java.util. import
javax.swing. public class WarehouseClient
public static void main(String args)
JFrame frame new WarehouseClientFrame()
frame.show()
10
class WarehouseClientFrame extends JFrame
implements ActionListener public
WarehouseClientFrame() initUI()
System.setSecurityManager(new RMISecurityManager()
) try Properties props new
Properties() String fileName
"WarehouseClient.properties"
FileInputStream in new FileInputStream(fileName)
props.load(in) String url
props.getProperty("warehouse.url") if
(url null) url
"rmi//localhost/central_warehouse"
centralWarehouse (Warehouse)Naming.lookup(url)
catch(Exception e)
System.out.println("Error Can't connect to
warehouse. " e)
11
private void callWarehouse(Customer c) try
Vector recommendations
centralWarehouse.find(c)
result.setText(c "\n") for (int i
0 i lt recommendations.size() i)
Product p (Product)recommendations.get(i)
String t p.getDescription() "\n"
result.append(t)
catch(Exception e) result.setText("Error
" e)
12
public void actionPerformed(ActionEvent evt)
Object hobbyObjects hobbies.getSelectedValues
() String hobbyStrings new
StringhobbyObjects.length
System.arraycopy(hobbyObjects, 0, hobbyStrings,
0, hobbyObjects.length) Customer
c new Customer(Integer.parseInt(age.getText()),
(male.isSelected() ? Product.MALE 0)
(female.isSelected() ? Product.FEMALE
0), hobbyStrings)
callWarehouse(c) private void initUI()
setTitle("WarehouseClient")
setSize(300, 300) addWindowListener(new
WindowAdapter() public void
windowClosing(WindowEvent e)
System.exit(0) )
getContentPane().setLayout(new
GridBagLayout())
13
GridBagConstraints gbc new GridBagConstraints()
gbc.fill GridBagConstraints.HORIZONTAL
gbc.weightx 100 gbc.weighty 0
add(new JLabel("Age"), gbc, 0, 0, 1, 1)
age new JTextField(4)
age.setText("20") add(age, gbc, 1, 0, 1,
1) male new JCheckBox("Male", true)
female new JCheckBox("Female", true)
add(male, gbc, 0, 1, 1, 1) add(female,
gbc, 1, 1, 1, 1) gbc.weighty 100
add(new JLabel("Hobbies"), gbc, 0, 2, 1, 1)
String choices "Gardening", "Beauty",
"Computers", "Household", "Sports"
gbc.fill GridBagConstraints.BOTH hobbies
new JList(choices) add(new
JScrollPane(hobbies), gbc, 1, 2, 1, 1)
14
gbc.weighty 0 gbc.fill
GridBagConstraints.NONE JButton
submitButton new JButton("Submit")
add(submitButton, gbc, 0, 3, 2, 1)
submitButton.addActionListener(this)
gbc.weighty 100 gbc.fill
GridBagConstraints.BOTH result new
JTextArea(4, 40) result.setEditable(false)
add(result, gbc, 0, 4, 2, 1)
private void add(Component c, GridBagConstraints
gbc, int x, int y, int w, int h)
gbc.gridx x gbc.gridy y
gbc.gridwidth w gbc.gridheight h
getContentPane().add(c, gbc)
15
private Warehouse centralWarehouse private
JTextField age private JCheckBox male
private JCheckBox female private JList
hobbies private JTextArea result
16
RMI Callbacks
  • Server Calls Back the Client
  • True Peer-to-Peer Interaction
  • Client itself must be exportable remote object
  • Registered with a remote server

17
Example
  • Quote Client/Server
  • Server maintains a list of quotes
  • Client makes additions to list of quotes
  • Callback used to allow server to asynchronously
    update clients with list of quotes

18
Steps
  • Specify Remote Server Interface
  • Specify Remote Client Interface
  • Develop Remote-server object
  • Develop Client
  • Compile
  • Run

19
(No Transcript)
20
(No Transcript)
21
(No Transcript)
22
(No Transcript)
23
(No Transcript)
24
(No Transcript)
25
(No Transcript)
Write a Comment
User Comments (0)
About PowerShow.com