diff options
Diffstat (limited to 'Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/stateful')
5 files changed, 133 insertions, 0 deletions
diff --git a/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/stateful/CartBean.java b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/stateful/CartBean.java new file mode 100644 index 0000000..48688c0 --- /dev/null +++ b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/stateful/CartBean.java @@ -0,0 +1,39 @@ +package examples.stateful;
+
+import javax.annotation.Resource;
+import javax.ejb.Remove;
+import javax.ejb.SessionContext;
+import javax.ejb.Stateful;
+
+import examples.stateful.interfaces.Cart;
+
+@Stateful
+public class CartBean implements Cart {
+ @Resource SessionContext context;
+ private int numItems;
+
+ public void addItem() {
+ numItems++;
+ }
+
+ public int getItems() {
+ return numItems;
+ }
+
+ @Remove(retainIfException=false)
+ public void remove1() throws Exception {
+ doRemove();
+ }
+
+ @Remove(retainIfException=true)
+ public void remove2() throws Exception {
+ doRemove();
+ }
+
+ private void doRemove() throws Exception {
+ if (numItems > 1 && numItems < 4) {
+ throw new Exception("blah");
+ }
+ System.out.println("Removing cart with: "+numItems+" items.");
+ }
+}
diff --git a/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/stateful/META-INF/application.xml b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/stateful/META-INF/application.xml new file mode 100644 index 0000000..eb9ae84 --- /dev/null +++ b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/stateful/META-INF/application.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<application version="1.4"
+ xmlns="http://java.sun.com/xml/ns/j2ee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
+ http://java.sun.com/xml/ns/j2ee/application_1_4.xsd">
+ <display-name>StatefulExamples</display-name>
+ <module>
+ <ejb>StatefulExamplesEjb.jar</ejb>
+ </module>
+</application>
diff --git a/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/stateful/build.xml b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/stateful/build.xml new file mode 100644 index 0000000..51b1f71 --- /dev/null +++ b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/stateful/build.xml @@ -0,0 +1,25 @@ +<?xml version="1.0"?> +<!DOCTYPE project [ <!ENTITY include SYSTEM "../../../etc/common.xml"> ]> + +<project name="ejb3-examples-stateful" default="main" basedir="../../.."> + <!-- basic settings --> + <property name="app.pkg" value="examples/stateful"/> + <property name="app.name" value="StatefulExamples"/> + <property name="create.client" value="true"/> + <property name="create.ejb" value="true"/> + <property name="create.ear" value="true"/> + <property name="deploy" value="true"/> + + <!-- Include common.xml --> + &include; + + <target name="main" depends="compile.common,package.common,deploy.common"/> + + <target name="run"> + <antcall target="execClient"> + <param name="client.class" value="examples.stateful.client.CartClient"/> + </antcall> + </target> +</project> + + diff --git a/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/stateful/client/CartClient.java b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/stateful/client/CartClient.java new file mode 100644 index 0000000..abc2da2 --- /dev/null +++ b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/stateful/client/CartClient.java @@ -0,0 +1,47 @@ +package examples.stateful.client;
+
+import javax.ejb.NoSuchEJBException;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+import examples.stateful.interfaces.Cart;
+
+public class CartClient {
+ public static void main(String[] args) {
+ try {
+ InitialContext ic = new InitialContext();
+ System.out.println("Adding items to cart, then removing...");
+ for (int i=0;i<2;i++) {
+ Cart cart = (Cart)ic.lookup(Cart.class.getName());
+ cart.addItem();
+ cart.addItem();
+ System.out.println("Number of items in the cart: "+cart.getItems());
+ try {
+ try {
+ if (i==0) {
+ cart.remove1();
+ }
+ else {
+ cart.remove2();
+ }
+ }
+ catch (Exception e) {
+ ;
+ }
+
+ cart.addItem();
+ cart.addItem();
+ cart.addItem();
+
+ System.out.println("Number of items in the cart: "+cart.getItems());
+ }
+ catch (NoSuchEJBException nsee) {
+ System.out.println("Cart was already removed during iteration "+i);
+ }
+ }
+ }
+ catch (NamingException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/stateful/interfaces/Cart.java b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/stateful/interfaces/Cart.java new file mode 100644 index 0000000..a55ebbe --- /dev/null +++ b/Master/Reference Architectures and Patterns/EJB 3.0 Code/Micah Examples/src/examples/stateful/interfaces/Cart.java @@ -0,0 +1,11 @@ +package examples.stateful.interfaces; + +import javax.ejb.Remote; + +@Remote +public interface Cart { + public void addItem(); + public int getItems(); + public void remove1() throws Exception; + public void remove2() throws Exception; +} |
