Go4Expert

Go4Expert (http://www.go4expert.com/)
-   Java (http://www.go4expert.com/articles/java-tutorials/)
-   -   EJB 3.0 Stateful Session Bean Example (http://www.go4expert.com/articles/ejb-30-stateful-session-bean-example-t4212/)

Sanskruti 7May2007 18:37

EJB 3.0 Stateful Session Bean Example
 
This article demonstrates how to write a simple Stateful Session Bean. It consists of three POJO's: Remote interface Cart.java, Bean class CartBean.java and EJB client CartClient.java.

Prerequisites



In order to complete the example application, you should be familiar with the following:
* EJB 3.0
This demonstration requires that the following software components are installed and configured correctly:
* Application Server such as J2EE, or other
* Sun JDK version 1.5 or above

Remote Interface: Cart.java



Code: Java

package ejb_stateful;

import java.util.Collection;
import javax.ejb.Remote;

@Remote
public interface Cart {
    public void addItem(String item);
    public void removeItem(String item);
    public Collection getItems();
}

Stateful Session Bean: CartBean.java


Code: Java

package ejb_stateful;

import java.util.ArrayList;
import java.util.Collection;
import javax.annotation.PostConstruct;
import javax.ejb.Stateful;

@Stateful
public class CartBean implements Cart {
    private ArrayList items;

    @PostConstruct
    public void initialize() {
        items = new ArrayList();
    }
   
    public void addItem(String item) {
        items.add(item);
    }

    public void removeItem(String item) {
        items.remove(item);
    }

    public Collection getItems() {
        return items;
    }
}

EJB Client: CartClient.java


Code: Java

package ejb_stateful;

import java.util.Collection;
import java.util.Iterator;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class CartClient {
    public static void main(String [] args) throws NamingException {
       
        try {
            final Context context = getInitialContext();
            Cart cart = (Cart)context.lookup("CartBean");
           
            System.out.println("Adding items to cart");
           
            cart.addItem("Pizza");
            cart.addItem("Pasta");
            cart.addItem("Noodles");
            cart.addItem("Bread");
            cart.addItem("Butter");
           
           
            System.out.println("Listing cart contents");
            Collection items = cart.getItems();
            for (Iterator i = items.iterator(); i.hasNext();) {
            String item = (String) i.next();
            System.out.println("  " + item);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private static Context getInitialContext() throws NamingException {
        return new InitialContext();
    }
}

Compile all the programs, start the server and execute CartClient. You will see following Output:
Code:

Adding items to cart
Listing cart contents
  Pizza
  Pasta
  Noodles
  Bread
  Butter


nirav.ahm 19Aug2008 13:17

Re: EJB 3.0 Stateful Session Bean Example
 
Hi,
I tried out this example using glassfish and netbeans but getting following error can you guide me?

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(N amingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(Init ialContext.java:247)
at javax.naming.InitialContext.getURLOrDefaultInitCtx (InitialContext.java:284)
at javax.naming.InitialContext.lookup(InitialContext. java:351)
at ejb_stateful.CartClient.main(CartClient.java:14)


Thanks
Nirav Shah

sabbir 25Aug2008 14:16

Re: EJB 3.0 Stateful Session Bean Example
 
Quote:

Originally Posted by nirav.ahm
Hi,
I tried out this example using glassfish and netbeans but getting following error can you guide me?

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(N amingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(Init ialContext.java:247)
at javax.naming.InitialContext.getURLOrDefaultInitCtx (InitialContext.java:284)
at javax.naming.InitialContext.lookup(InitialContext. java:351)
at ejb_stateful.CartClient.main(CartClient.java:14)


Thanks
Nirav Shah


just add app-serv-rt.jar(for GlassFish 2.0) in your client project it would be working fine

Thanx
Sabbirali Kadiwala

BrentAston 31Oct2008 14:54

Re: EJB 3.0 Stateful Session Bean Example
 
Hi :charming: :charming:



:nonod: I tried out this example using glassfish and netbeans

akash2008 20Jan2009 23:30

Re: EJB 3.0 Stateful Session Bean Example
 
write a simple Stateful Session Bean. It consists of three POJO's: Remote interface Cart.java, Bean class CartBean.java and EJB client CartClient.java. Prerequisites In order to complete the example application, you should

Venkat3 3Jul2010 12:51

Re: EJB 3.0 Stateful Session Bean Example
 
hello,

i know that a stateful bean retains the state. but in this example, i don't see the strength of maintaining the "state" of the so called stateful bean.

In this example, what is the so called "state"?
Or can someone explain where in this example the difference with a stateless bean comes above???

Thanks!

abcde12345 2Aug2010 08:14

Re: EJB 3.0 Stateful Session Bean Example
 
What a dumb example. How about actually exercising the state of the session bean by making multiple calls. Calling it once demonstrates nothing.

Sujata420 17Feb2011 15:49

Re: EJB 3.0 Stateful Session Bean Example
 
what are the jar files which i have import for this example? :confused:


All times are GMT +5.5. The time now is 03:04.