advertisement

Search Tips
Articles  |   Tutorials  |   Reviews  |   Dev Tools  |   by Category  |   by Date  |   by Name  |   Submit  |   Source Code  |  

Browse DevX
DevX Updates - Sign Up Here


Partners & Affiliates












advertisement

Articles : Advanced Topics in Java :
Bi-Directional Communication in Distributed Remote Objects :

Contents
Introduction to Remote Method Invocation
The Problem Definition
Creating the Remote Interface
Implementing the Interfaces
The Server Starter
The Client Starter
Running the Application

Design patterns

The design we follow is similar to the Observer Pattern. We have a central object that keeps track of what's happening. It updates all or a group of objects when some other object changes state. The update being a change in the quantity or state (or both) of the affected objects. I say similar because the idea here is to illustrate the bi-directional communication between isolated remote objects. That is, to not go for the "model-view" or the Observable interface but move towards a "business logic" oriented approach where each object is responsible for its actions. That is why a registry is started on a client to give the client objects the ability to provide a remote reference to other clients directly if required.

We don't just need simple remote callbacks from the server but in addition to that, each object must be capable of providing a direct reference to itself.

Writing the Remote Interfaces

The interface for the server, conforming to the RMI definitions, contains methods that add and remove users and send the messages. The interface for the server object is called PopupServerInterface and is stored in PopupServerInterface.java

 public void addUser(PopupClientInterface userId)
	throws RemoteException;

 public void removeUser(PopupClientInterface userId)
	throws RemoteException ;

 public Vector getUsers()  throws RemoteException ;

 public  void sendMessage(String message)
	throws RemoteException;

The working can be understood with what I quite crudely call the "going fishing analogy."

Consider the client as a fisherman who goes fishing as soon as it's started. The client throws a line, which is caught by the fish, (our PopupServer) that keeps it tightly pulled, refusing to let go, (not letting the garbage get collected) by keeping a reference to it. The fisherman, being smart, carries more than one fishing rod and casts multiple lines to different fish.

Whenever the fish wants to send a message to any other fish, it just pulls on the line (sends a message by invoking a method on the reference stored). The effects of this tugging ripple through the fisherman to all the other fish!! Of course it is the fish' job to inform the fisherman when it's tired so that the fisherman can also free the line.

Let's go on to define the client interface, PopupClientInterface now. It contains only one method that will be invoked by the server for showing the popup message, and is stored in the file PopupClientInterface.java.

 public void showPopup(String msg) throws RemoteException;

 public String getInfo() throws RemoteException;

NEXT


Sameer Tyagi is a Software Engineer with several years of programming experience in iNet application development and has conducted multiple training workshops in Java. Besides holding an Engineering degree in Electronics he is a Sun Certified Java 1.1 Programmer.
Email: sameertyagi@usa.net

How to Add Java Applets to Your Site

New on the Java Boutique:

New Review:

Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling API boasts simplicity, ease-of-integration, a well-rounded feature set, and it's free!

New Applet:

Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA sequences into three useful formats.

Elsewhere on internet.com:

WebDeveloper Java
Lots of Java information on webdeveloper.com

WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.

ScriptSearch Java
Hundreds of free Java code files to download.

jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.

internet.com logo


JavaBytes
Internet Cyclone
This powerful, easy-to-use, internet optimizer is for Windows 95, 98, ME, NT, 2000 and XP. It's designed to automatically optimize your Windows settings, boosting your Internet connection up to 200%.
Blackmail Applet
This applet prints out text that looks like letters cut out of a newspaper. You can specify the text, the width and height of the applet and the delay after each letter. Future versions will have more parameters.
JB User Poll
What is your primary tool for learning Java?
The JavaBoutique Top 15:
1. articles.rdf
2. Pool
3. applets.rdf
4.
5. Little_Wizard
6. PingPong
7. Birdbrain
8. Castles
9. PacMan
10. AScroll2
11. Viewer
12. JUpload
13. JavaMarquee
14. JTM
15. BasicCalendar
Want more? Check out our Top 100!

Refer-It
Affiliate Program and Referral Directory.
New on internet.com
Google IM Not Talking to Other Jabbers
Newly-launched Google Talk IM service doesn't connect to other open source Jabber servers and users -- at least not yet.

Printer Sets Good Example for Small Business Security
While surveys suggest that small businesses aren't prepared for ever-present security dangers, this Boston-area printer has maintained a pristine operation since a scare six years ago.

VoIP Gizmo Comes to Universities
As student gear up for back to school, a SIP-based initiative aims to VoIP-enable universities around the world for free calling.



Copyright 2002 INT Media Group, Incorporated. All Rights Reserved.
Legal Notices,  Licensing, Reprints, & Permissions,  Privacy Policy.
http://www.internet.com/