I would like some clarification on accessing Remote/Local Session Bean using an Application Client. In other word, there appears to be more than one approach to the same Session bean. Let's start by declaring the Converter EJB:
I have two method to accessing this bean.
( i ) Lookup JNDI using the following set of code:
( ii ) Application Client lookup?
It is the first time I come a cross method ( ii ) and could not get it to work properly. The error message
SJSAS server side
**RemoteBusinessJndiName: converter.ejb.Converter; remoteBusIntf: converter.ejb.Converter LDR5010: All ejb(s) of [converter] loaded successfully! Registering ad hoc servlet: WebPathPath: context root = "/converter", path = "/converter-app-client' Java Web Start services started for application com.sun.enterprise.appclient.jws.ApplicationContentOrigin@c91c07
root=/converter/converter-app-client, module name= , parent=converter WEB0100: Loading web module [converter:converter-war.war] in virtual server [server] at [/converter]Class [ Lconverter/ejb/Converter; ] not found. Error while loading [ class converter.client.ConverterClient ] Error in annotation processing: java.lang.NoClassDefFoundError: Lconverter/ejb/Converter; deployed with moduleid = converter-app-client
Caught an unexpected exception! java.lang.NullPointerException at converter.client.ConverterClient.doConversion(ConverterClient.java:59) at converter.client.ConverterClient.main(ConverterClient.java:53) Here is the JNDI listing in ASADMIN:
My questions are:
( a ) Why does the error occur? ( b ) what is the architecture difference in accessing the same bean? Does JNDI lookup allows one to access EJB from remote host as opposed the method ( ii ) which is only restricted to local access on the same JVM/Container? ( c ) What are the pros & cons between the two?
I am using Application Client to lookup these Session Beans on Netbeans 5.5, SJSAS 9.0, SDK 1.5.0_11 on Windows XP platform.
Any guideance/advice would be very much appreciated.