Deploying EJB application on JBoss is very simple. You need o put .jar file of your ejb application into deploy directory of JBoss server. JBoss detect automatically it and terns it in running mode. JBoss will display binding name of EJB application on console whatever it assigned and you need to connect deployed ejb application through client program.
Here is an example.
EJB Program
EJB Program
package stateful.ejb;
import javax.ejb.*;
@Remote
public interface Adder{
void setX(int x);
void setY(int y);
void add();
int getResult();
}
package stateful.ejb;
import javax.ejb.*;
@Stateful(mappedName="stateful_adder")
public class AdderClass implements Adder{
int x;
int y;
int z;
public void setX(int x){
System.out.println("client sent "+x);
this.x=x;
}
public void setY(int y){
System.out.println("client sent "+y);
this.y=y;
}
public void add(){
z=x+y;
System.out.println("values added");
}
public int getResult(){
System.out.println("result sent to client "+z);
return z;
}
}
Client Program
import javax.naming.*;
import java.util.*;
import javax.rmi.PortableRemoteObject;
class AdderClient{
public static void main(String ar[])throws Exception{
Properties p=new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
p.put(Context.PROVIDER_URL,"localhost:1099");
InitialContext ctx=new InitialContext(p);
Object obj1=ctx.lookup("AdderClass/remote-stateful.ejb.Adder");
stateful.ejb.Adder obj=(stateful.ejb.Adder)obj1;
int a=Integer.parseInt(System.console().readLine("Enter First value : "));
obj.setX(a);
int b=Integer.parseInt(System.console().readLine("Enter second value : "));
obj.setY(b);
obj.add();
int c=obj.getResult();
System.out.println("Sum = "+c);
}
}
OUTPUT
import javax.ejb.*;
@Remote
public interface Adder{
void setX(int x);
void setY(int y);
void add();
int getResult();
}
package stateful.ejb;
import javax.ejb.*;
@Stateful(mappedName="stateful_adder")
public class AdderClass implements Adder{
int x;
int y;
int z;
public void setX(int x){
System.out.println("client sent "+x);
this.x=x;
}
public void setY(int y){
System.out.println("client sent "+y);
this.y=y;
}
public void add(){
z=x+y;
System.out.println("values added");
}
public int getResult(){
System.out.println("result sent to client "+z);
return z;
}
}
Client Program
import javax.naming.*;
import java.util.*;
import javax.rmi.PortableRemoteObject;
class AdderClient{
public static void main(String ar[])throws Exception{
Properties p=new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
p.put(Context.PROVIDER_URL,"localhost:1099");
InitialContext ctx=new InitialContext(p);
Object obj1=ctx.lookup("AdderClass/remote-stateful.ejb.Adder");
stateful.ejb.Adder obj=(stateful.ejb.Adder)obj1;
int a=Integer.parseInt(System.console().readLine("Enter First value : "));
obj.setX(a);
int b=Integer.parseInt(System.console().readLine("Enter second value : "));
obj.setY(b);
obj.add();
int c=obj.getResult();
System.out.println("Sum = "+c);
}
}
OUTPUT
On server Console
16:11:53,078 INFO [STDOUT] client sent 10
16:11:56,281 INFO [STDOUT] client sent 20
16:11:56,296 INFO [STDOUT] values added
16:11:56,296 INFO [STDOUT] result sent to client 30
On client Console
Enter First value : 10
Enter second value : 20
Sum = 30
Comments