©1994-2003 Kevin Boone
Home     Section index     K-Zone home

Site search

Glossary
Confused by computer jargon? Look it up!

Shameless plug


Now available!

Articles
- Ten-minute guide to setting up a WAP site

- Talk like your boss: new developments in managerese

More...

Development
File handling in the Linux kernel

Java development for the Sony-Ericsson P800

SunONE Application Server 7 FAQ

More...

Linux
Using Linux with the Treo 600

- Linux on the Tecra M1

- Some notes on openzaurus

More...

Download
Java stuff

Linux stuff

More...

(Please read the download policy)

Home automation
The X10 system

Linux TW723 driver

More...

The K-Zone
K-Zone computing

K-Zone law

K-Zone education and science

K-Zone motorcycles

K-Zone DIY

K-Zone railways

K-Zone martial arts

About the author

K-Zone home page

 
Step 5: coding the test client
contents
Step 6: compiling and running the test client

e're now ready to run the test client, but first a word of explanation.
       In reality the client and the server are likely to be on different computers. When you compile the client, the compiler needs to know about the organization and methods of classes in the Bean so it can do type checking. When you run the client, the run-time engine needs to know about the Bean classes, because type-casting is done at run-time. So when the client attempts to cast the remote reference to a reference to an object of class InterestHome for example, it needs to know about this class. This means that you will need the Bean class files on both the client and the server even though they execute on the server. This is fairly obvious if you think about the logic, but it causes all sorts of problems for people who are new to RMI programming. If the client can't find the Bean classes, you will get error messages like this:

javax.naming.CommunicationException [Root exception is
java.lang.ClassNotFoundException: com.web_tomorrow.interest.InterestHome]
A `communication exception' is the exception that represents any error that can't readily be ascribed to a definite cause. If you get this message you need to pay attention to the CLASSPATH on the client.
       If the client program is at the top of the directory hierarchy, with the Bean classes below it, then we can run it like this:
java -classpath $$CLASSPATH:\
/usr/lib/jboss/lib/ext/ejb.jar:/usr/lib/jboss/client/jboss-client.jar \ 
InterestClient 
Once again, this needs to go in a shell script or a Makefile; you won't want to type it more than once.
       Note the long CLASSPATH; it needs to include the jBoss client classes and the EJB classes as well as the standard classpath (if any).
       If all is well, the test client produces the following output:
Got context
Got reference
Interest on 1000 units, at 10% per period, compounded over 2 periods is:
210.00000000000023
The Bean should produce an output on the server as well; this is to show that the Bean has executed on the server, not the client. Look for something like this in the server log:
[Interest] Someone called `calculateCompoundInterest!'
Well, that's it. We covered coding, compiling and deploying the Bean, and coding and running a simple test client. If you found this article useful, drop me a line at k.boone@web-tomorrow.com; if there's enough response I may be persuaded to produce some more sophisticated tutorials.

Kevin Boone, June 2000