I have developed EJB using NETbeans IDE having glassfish server. I can call it from standalone java, only if this java project is developed under NETbeans and run under same JRE. But I need to find out how to run it in different jre's. I could not find much help on this one. Any suggestions? (or related links would do) Thanks,
I am looking to create a system which on signup will create a subdomain on my website for the users account area.
In order to call EJB from remote JVM, you should
ReplyDeleteUse @Remote annotation on you EJB
Supply a jar with interfaces and put it in the classpath of you client-vm
Use JNDI in order to obtain a reference on the EJB stub from server.
For JNDI you'll need an implementation that depends on container (for example, if its JBoss jboss-client-all.jar should be enough (I don't remember the exact name but you've got the point, I think)
Once you feel comfortable with the overall notions and definitions, read this example, I think its handy enough
Example
Hope this helps
STEP 1:
ReplyDeleteContext context = new InitialContext():
The initial context is a reference to the JNDI lookup service.
It is like the entry into the JNDI virtual directory tree.
STEP 2:
Object o = context.lookup("mejb"):
Here in the lookup we need to give the name of the bean whatever that is deployed in the server, to get a reference to the home interface of that bean.
We then get the object of type java.lang.Object we need to cast this object to the Home interface of whichever bean we did a lookup on.
STEP 3:
Home home = (Home) PortableRemoteObject.narrow(o,Home.class):
We actually need to cast the object to the type that we think it is type of. However, since this is RMI over IIOP we need to use the PortableRemoteObject.narrow method this it seems filters the object type to the actual object type and checks for errors.