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.0This 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 aboveRemote Interface: Cart.java Code: 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: 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: 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
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(NamingManager.java:645) at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.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
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
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!
What a dumb example. How about actually exercising the state of the session bean by making multiple calls. Calling it once demonstrates nothing.