EJB3 | Stateless session bean

To build a statelesss session bean in EJB3, you need to create one interafce and on class. Interface is implemented by class and methods declared in the interaface are available to client for remote access. Bean class and interaface should be public. Bean class is annotated with the annotation @Stateless(mappedName="something") and interafce is annotated with @Remote annotation. Both are compiled and packed in jar file.

Coding for Remote Interface
package p1;
import javax.ejb.Remote;
@Remote
public interface AdderIntf{
    int add(int x,int y);
}
Coding for Bean class
package p1;
import javax.ejb.Stateless;
@Stateless(mappedName="abc")
public class Adder implements AdderIntf{
    public int add(int x,int y){
        System.out.println("x="+x+" , y="+y);
        int z=x+y;
        return z;
    }
}
Both are compiled and packaged in jar file. you can you following command to package in jar file.
>jar cvf myejb.jar p1
Here p1 is the package in with two class files are produced by compiler.

Building client for statelesss session bean
Client for EJB may be application program, servlet or jsp. At the time of coding of client program, we need to pass server specific coding to Context object. Following program is using the EJB hosted  on weblogic server. So you can see some weblogic specific coding here.
import javax.naming.*;
import java.util.*;
class Add{
    public static void main(String ar[])throws Exception{
            Properties p=new Properties();
            p.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
            p.put(Context.PROVIDER_URL,"t3://localhost:7001");
            InitialContext ctx=new InitialContext(p);
            p1.AdderIntf a1=(p1.AdderIntf)ctx.lookup("abc#p1.AdderIntf");
            int x=a1.add(10,20);
            System.out.println(x);
             
    }
}
Above program will connect to weblogic server and invoke the method add of the EJB having JNDI name abc#p1.AdderIntf and result is received by this program.

No comments:

Popular Posts