http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/testing-security-2.adoc
----------------------------------------------------------------------
diff --git a/src/main/jbake/content/examples/testing-security-2.adoc 
b/src/main/jbake/content/examples/testing-security-2.adoc
new file mode 100755
index 0000000..c8a2491
--- /dev/null
+++ b/src/main/jbake/content/examples/testing-security-2.adoc
@@ -0,0 +1,306 @@
+= Testing Security 2
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example testing-security-2 can be browsed at 
https://github.com/apache/tomee/tree/master/examples/testing-security-2
+
+
+*Help us document this example! Click the blue pencil icon in the upper right 
to edit this page.*
+
+==  Movie
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+import javax.persistence.Entity;
+
+@Entity
+public class Movie {
+
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+
+}
+----
+
+
+==  Movies
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+//START SNIPPET: code
+
+import javax.annotation.security.PermitAll;
+import javax.annotation.security.RolesAllowed;
+import javax.ejb.Stateful;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.TransactionAttributeType;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import javax.persistence.Query;
+import java.util.List;
+
+@Stateful
+public class Movies {
+
+    @PersistenceContext(unitName = "movie-unit", type = 
PersistenceContextType.EXTENDED)
+    private EntityManager entityManager;
+
+    @RolesAllowed({"Employee", "Manager"})
+    public void addMovie(Movie movie) throws Exception {
+        entityManager.persist(movie);
+    }
+
+    @RolesAllowed({"Manager"})
+    public void deleteMovie(Movie movie) throws Exception {
+        entityManager.remove(movie);
+    }
+
+    @PermitAll
+    @TransactionAttribute(TransactionAttributeType.SUPPORTS)
+    public List<Movie> getMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT m from Movie as m");
+        return query.getResultList();
+    }
+}
+----
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"; version="1.0">
+
+  <persistence-unit name="movie-unit">
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <class>org.superbiz.injection.secure.Movie</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" 
value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+
+==  MovieTest
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+import junit.framework.TestCase;
+
+import javax.ejb.EJB;
+import javax.ejb.EJBAccessException;
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.List;
+import java.util.Properties;
+
+//START SNIPPET: code
+public class MovieTest extends TestCase {
+
+    @EJB
+    private Movies movies;
+
+    protected void setUp() throws Exception {
+
+        // Uncomment this line to set the login/logout functionality on Debug
+        //System.setProperty("log4j.category.OpenEJB.security", "debug");
+
+        Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        EJBContainer.createEJBContainer(p).getContext().bind("inject", this);
+    }
+
+    public void testAsManager() throws Exception {
+        Properties p = new Properties();
+        p.put(Context.INITIAL_CONTEXT_FACTORY, 
"org.apache.openejb.core.LocalInitialContextFactory");
+        p.put(Context.SECURITY_PRINCIPAL, "jane");
+        p.put(Context.SECURITY_CREDENTIALS, "waterfall");
+
+        InitialContext context = new InitialContext(p);
+
+        try {
+            movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 
1992));
+            movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+            movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+            List<Movie> list = movies.getMovies();
+            assertEquals("List.size()", 3, list.size());
+
+            for (Movie movie : list) {
+                movies.deleteMovie(movie);
+            }
+
+            assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
+        } finally {
+            context.close();
+        }
+    }
+
+    public void testAsEmployee() throws Exception {
+        Properties p = new Properties();
+        p.put(Context.INITIAL_CONTEXT_FACTORY, 
"org.apache.openejb.core.LocalInitialContextFactory");
+        p.put(Context.SECURITY_PRINCIPAL, "joe");
+        p.put(Context.SECURITY_CREDENTIALS, "cool");
+
+        InitialContext context = new InitialContext(p);
+
+        try {
+            movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 
1992));
+            movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+            movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+            List<Movie> list = movies.getMovies();
+            assertEquals("List.size()", 3, list.size());
+
+            for (Movie movie : list) {
+                try {
+                    movies.deleteMovie(movie);
+                    fail("Employees should not be allowed to delete");
+                } catch (EJBAccessException e) {
+                    // Good, Employees cannot delete things
+                }
+            }
+
+            // The list should still be three movies long
+            assertEquals("Movies.getMovies()", 3, movies.getMovies().size());
+        } finally {
+            context.close();
+        }
+    }
+
+    public void testUnauthenticated() throws Exception {
+        try {
+            movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 
1992));
+            fail("Unauthenticated users should not be able to add movies");
+        } catch (EJBAccessException e) {
+            // Good, guests cannot add things
+        }
+
+        try {
+            movies.deleteMovie(null);
+            fail("Unauthenticated users should not be allowed to delete");
+        } catch (EJBAccessException e) {
+            // Good, Unauthenticated users cannot delete things
+        }
+
+        try {
+            // Read access should be allowed
+
+            List<Movie> list = movies.getMovies();
+        } catch (EJBAccessException e) {
+            fail("Read access should be allowed");
+        }
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.secure.MovieTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/testing-security-2
+INFO - openejb.base = /Users/dblevins/examples/testing-security-2
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, 
provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, 
type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, 
provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: 
/Users/dblevins/examples/testing-security-2/target/classes
+INFO - Beginning load: 
/Users/dblevins/examples/testing-security-2/target/classes
+INFO - Configuring enterprise application: 
/Users/dblevins/examples/testing-security-2
+INFO - Configuring Service(id=Default Stateful Container, type=Container, 
provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, 
id=Default Stateful Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, 
provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean 
org.superbiz.injection.secure.MovieTest: Container(type=MANAGED, id=Default 
Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 
'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, 
provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource 
ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/examples/testing-security-2" 
loaded.
+INFO - Assembling app: /Users/dblevins/examples/testing-security-2
+INFO - PersistenceUnit(name=movie-unit, 
provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider 
time 413ms
+INFO - 
Jndi(name="java:global/testing-security-2/Movies!org.superbiz.injection.secure.Movies")
+INFO - Jndi(name="java:global/testing-security-2/Movies")
+INFO - 
Jndi(name="java:global/EjbModule1634151355/org.superbiz.injection.secure.MovieTest!org.superbiz.injection.secure.MovieTest")
+INFO - 
Jndi(name="java:global/EjbModule1634151355/org.superbiz.injection.secure.MovieTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default 
Stateful Container)
+INFO - Created Ejb(deployment-id=org.superbiz.injection.secure.MovieTest, 
ejb-name=org.superbiz.injection.secure.MovieTest, container=Default Managed 
Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default 
Stateful Container)
+INFO - Started Ejb(deployment-id=org.superbiz.injection.secure.MovieTest, 
ejb-name=org.superbiz.injection.secure.MovieTest, container=Default Managed 
Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/testing-security-2)
+INFO - Logging in
+INFO - Logging out
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow 
reinitialization
+INFO - Logging in
+INFO - Logging out
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow 
reinitialization
+Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.546 sec
+
+Results :
+
+Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    

http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/testing-security-3.adoc
----------------------------------------------------------------------
diff --git a/src/main/jbake/content/examples/testing-security-3.adoc 
b/src/main/jbake/content/examples/testing-security-3.adoc
new file mode 100755
index 0000000..7a1fdbe
--- /dev/null
+++ b/src/main/jbake/content/examples/testing-security-3.adoc
@@ -0,0 +1,381 @@
+= Testing Security 3
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example testing-security-3 can be browsed at 
https://github.com/apache/tomee/tree/master/examples/testing-security-3
+
+
+*Help us document this example! Click the blue pencil icon in the upper right 
to edit this page.*
+
+==  Movie
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+import javax.persistence.Entity;
+
+@Entity
+public class Movie {
+
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+
+}
+----
+
+
+==  Movies
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+//START SNIPPET: code
+
+import javax.annotation.security.PermitAll;
+import javax.annotation.security.RolesAllowed;
+import javax.ejb.Stateful;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.TransactionAttributeType;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import javax.persistence.Query;
+import java.util.List;
+
+@Stateful
+public class Movies {
+
+    @PersistenceContext(unitName = "movie-unit", type = 
PersistenceContextType.EXTENDED)
+    private EntityManager entityManager;
+
+    @RolesAllowed({"Employee", "Manager"})
+    public void addMovie(Movie movie) throws Exception {
+        entityManager.persist(movie);
+    }
+
+    @RolesAllowed({"Manager"})
+    public void deleteMovie(Movie movie) throws Exception {
+        entityManager.remove(movie);
+    }
+
+    @PermitAll
+    @TransactionAttribute(TransactionAttributeType.SUPPORTS)
+    public List<Movie> getMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT m from Movie as m");
+        return query.getResultList();
+    }
+}
+----
+
+
+==  MyLoginProvider
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+import org.apache.openejb.core.security.jaas.LoginProvider;
+
+import javax.security.auth.login.FailedLoginException;
+import java.util.Arrays;
+import java.util.List;
+
+public class MyLoginProvider implements LoginProvider {
+
+
+    @Override
+    public List<String> authenticate(String user, String password) throws 
FailedLoginException {
+        if ("paul".equals(user) && "michelle".equals(password)) {
+            return Arrays.asList("Manager", "rockstar", "beatle");
+        }
+
+        if ("eddie".equals(user) && "jump".equals(password)) {
+            return Arrays.asList("Employee", "rockstar", "vanhalen");
+        }
+
+        throw new FailedLoginException("Bad user or password!");
+    }
+}
+----
+
+
+==  org.apache.openejb.core.security.jaas.LoginProvider
+
+    org.superbiz.injection.secure.MyLoginProvider
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"; version="1.0">
+
+  <persistence-unit name="movie-unit">
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <class>org.superbiz.injection.secure.Movie</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" 
value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+
+==  MovieTest
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+import junit.framework.TestCase;
+
+import javax.ejb.EJB;
+import javax.ejb.EJBAccessException;
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import java.util.List;
+import java.util.Properties;
+
+public class MovieTest extends TestCase {
+
+    @EJB
+    private Movies movies;
+
+    private Context getContext(String user, String pass) throws 
NamingException {
+        Properties p = new Properties();
+        p.put(Context.INITIAL_CONTEXT_FACTORY, 
"org.apache.openejb.core.LocalInitialContextFactory");
+        p.setProperty("openejb.authentication.realmName", 
"ServiceProviderLogin");
+        p.put(Context.SECURITY_PRINCIPAL, user);
+        p.put(Context.SECURITY_CREDENTIALS, pass);
+
+        return new InitialContext(p);
+    }
+
+    protected void setUp() throws Exception {
+        Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        EJBContainer.createEJBContainer(p).getContext().bind("inject", this);
+    }
+
+    public void testAsManager() throws Exception {
+        final Context context = getContext("paul", "michelle");
+
+        try {
+            movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 
1992));
+            movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+            movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+            List<Movie> list = movies.getMovies();
+            assertEquals("List.size()", 3, list.size());
+
+            for (Movie movie : list) {
+                movies.deleteMovie(movie);
+            }
+
+            assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
+        } finally {
+            context.close();
+        }
+    }
+
+    public void testAsEmployee() throws Exception {
+        final Context context = getContext("eddie", "jump");
+
+        try {
+            movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 
1992));
+            movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+            movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+            List<Movie> list = movies.getMovies();
+            assertEquals("List.size()", 3, list.size());
+
+            for (Movie movie : list) {
+                try {
+                    movies.deleteMovie(movie);
+                    fail("Employees should not be allowed to delete");
+                } catch (EJBAccessException e) {
+                    // Good, Employees cannot delete things
+                }
+            }
+
+            // The list should still be three movies long
+            assertEquals("Movies.getMovies()", 3, movies.getMovies().size());
+        } finally {
+            context.close();
+        }
+    }
+
+    public void testUnauthenticated() throws Exception {
+        try {
+            movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 
1992));
+            fail("Unauthenticated users should not be able to add movies");
+        } catch (EJBAccessException e) {
+            // Good, guests cannot add things
+        }
+
+        try {
+            movies.deleteMovie(null);
+            fail("Unauthenticated users should not be allowed to delete");
+        } catch (EJBAccessException e) {
+            // Good, Unauthenticated users cannot delete things
+        }
+
+        try {
+            // Read access should be allowed
+
+            List<Movie> list = movies.getMovies();
+
+        } catch (EJBAccessException e) {
+            fail("Read access should be allowed");
+        }
+
+    }
+
+    public void testLoginFailure() throws NamingException {
+        try {
+            getContext("eddie", "panama");
+            fail("supposed to have a login failure here");
+        } catch (javax.naming.AuthenticationException e) {
+            //expected
+        }
+
+        try {
+            getContext("jimmy", "foxylady");
+            fail("supposed to have a login failure here");
+        } catch (javax.naming.AuthenticationException e) {
+            //expected
+        }
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.secure.MovieTest
+INFO - 
********************************************************************************
+INFO - OpenEJB http://tomee.apache.org/
+INFO - Startup: Fri Jul 20 08:42:53 EDT 2012
+INFO - Copyright 1999-2012 (C) Apache OpenEJB Project, All Rights Reserved.
+INFO - Version: 4.1.0
+INFO - Build date: 20120720
+INFO - Build time: 08:33
+INFO - 
********************************************************************************
+INFO - openejb.home = 
/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3
+INFO - openejb.base = 
/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3
+INFO - Created new singletonService 
org.apache.openejb.cdi.ThreadSingletonServiceImpl@38ee6681
+INFO - Succeeded in installing singleton service
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to 
create one for the beans deployed.
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, 
provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, 
type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, 
provider-id=Default JDBC Database)
+INFO - Creating TransactionManager(id=Default Transaction Manager)
+INFO - Creating SecurityService(id=Default Security Service)
+INFO - Creating Resource(id=movieDatabase)
+INFO - Beginning load: 
/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3/target/classes
+INFO - Configuring enterprise application: 
/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3
+INFO - Auto-deploying ejb Movies: EjbDeployment(deployment-id=Movies)
+INFO - Configuring Service(id=Default Stateful Container, type=Container, 
provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, 
id=Default Stateful Container)
+INFO - Creating Container(id=Default Stateful Container)
+INFO - Using directory /tmp for stateful session passivation
+INFO - Configuring Service(id=Default Managed Container, type=Container, 
provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean 
org.superbiz.injection.secure.MovieTest: Container(type=MANAGED, id=Default 
Managed Container)
+INFO - Creating Container(id=Default Managed Container)
+INFO - Using directory /tmp for stateful session passivation
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 
'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, 
provider-id=movieDatabase)
+INFO - Creating Resource(id=movieDatabaseNonJta)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource 
ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application 
"/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3" loaded.
+INFO - Assembling app: 
/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3
+SEVERE - JAVA AGENT NOT INSTALLED. The JPA Persistence Provider requested 
installation of a ClassFileTransformer which requires a JavaAgent.  See 
http://tomee.apache.org/3.0/javaagent.html
+INFO - PersistenceUnit(name=movie-unit, 
provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider 
time 268ms
+INFO - 
Jndi(name="java:global/testing-security-3/Movies!org.superbiz.injection.secure.Movies")
+INFO - Jndi(name="java:global/testing-security-3/Movies")
+INFO - Existing thread singleton service in SystemInstance() 
org.apache.openejb.cdi.ThreadSingletonServiceImpl@38ee6681
+INFO - OpenWebBeans Container is starting...
+INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
+INFO - All injection points are validated successfully.
+INFO - OpenWebBeans Container has started, it took 170 ms.
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default 
Stateful Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default 
Stateful Container)
+INFO - Deployed 
Application(path=/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-security-3)
+20-Jul-2012 8:42:55 AM null openjpa.Runtime
+INFO: Starting OpenJPA 2.2.0
+20-Jul-2012 8:42:56 AM null openjpa.jdbc.JDBC
+INFO: Using dictionary class "org.apache.openjpa.jdbc.sql.HSQLDictionary" 
(HSQL Database Engine 2.2.8 ,HSQL Database Engine Driver 2.2.8).
+20-Jul-2012 8:42:57 AM null openjpa.Enhance
+INFO: Creating subclass and redefining methods for "[class 
org.superbiz.injection.secure.Movie]". This means that your application will be 
less efficient than it would if you ran the OpenJPA enhancer.
+INFO - Logging in
+INFO - Logging out
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow 
reinitialization
+INFO - Logging in
+INFO - Logging out
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow 
reinitialization
+Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.069 sec
+
+Results :
+
+Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
+----
+
+

http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/testing-security-4.adoc
----------------------------------------------------------------------
diff --git a/src/main/jbake/content/examples/testing-security-4.adoc 
b/src/main/jbake/content/examples/testing-security-4.adoc
new file mode 100755
index 0000000..69af878
--- /dev/null
+++ b/src/main/jbake/content/examples/testing-security-4.adoc
@@ -0,0 +1,9 @@
+= testing-security-4
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example testing-security-4 can be browsed at 
https://github.com/apache/tomee/tree/master/examples/testing-security-4
+
+No README.md yet, be the first to contribute one!

http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/testing-security-meta.adoc
----------------------------------------------------------------------
diff --git a/src/main/jbake/content/examples/testing-security-meta.adoc 
b/src/main/jbake/content/examples/testing-security-meta.adoc
new file mode 100755
index 0000000..5f234d6
--- /dev/null
+++ b/src/main/jbake/content/examples/testing-security-meta.adoc
@@ -0,0 +1,517 @@
+= Testing Security Meta
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example testing-security-meta can be browsed at 
https://github.com/apache/tomee/tree/master/examples/testing-security-meta
+
+
+*Help us document this example! Click the blue pencil icon in the upper right 
to edit this page.*
+
+==  AddPermission
+
+
+[source,java]
+----
+package org.superbiz.injection.secure.api;
+
+import javax.annotation.security.RolesAllowed;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
+@Metatype
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+
+public @interface AddPermission {
+    public static interface $ {
+
+        @AddPermission
+        @RolesAllowed({"Employee", "Manager"})
+        public void method();
+    }
+}
+----
+
+
+==  DeletePermission
+
+
+[source,java]
+----
+package org.superbiz.injection.secure.api;
+
+import javax.annotation.security.RolesAllowed;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
+@Metatype
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+
+public @interface DeletePermission {
+    public static interface $ {
+
+        @DeletePermission
+        @RolesAllowed("Manager")
+        public void method();
+    }
+}
+----
+
+
+==  Metatype
+
+
+[source,java]
+----
+package org.superbiz.injection.secure.api;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Metatype
+@Target(ElementType.ANNOTATION_TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Metatype {
+}
+----
+
+
+==  MovieUnit
+
+
+[source,java]
+----
+package org.superbiz.injection.secure.api;
+
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
+@Metatype
+@Target({ElementType.METHOD, ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+
+@PersistenceContext(name = "movie-unit", unitName = "movie-unit", type = 
PersistenceContextType.EXTENDED)
+public @interface MovieUnit {
+}
+----
+
+
+==  ReadPermission
+
+
+[source,java]
+----
+package org.superbiz.injection.secure.api;
+
+import javax.annotation.security.PermitAll;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.TransactionAttributeType;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
+@Metatype
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+
+public @interface ReadPermission {
+    public static interface $ {
+
+        @ReadPermission
+        @PermitAll
+        @TransactionAttribute(TransactionAttributeType.SUPPORTS)
+        public void method();
+    }
+}
+----
+
+
+==  RunAsEmployee
+
+
+[source,java]
+----
+package org.superbiz.injection.secure.api;
+
+import javax.annotation.security.RunAs;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
+@Metatype
+@Target({ElementType.TYPE, ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+
+@RunAs("Employee")
+public @interface RunAsEmployee {
+}
+----
+
+
+==  RunAsManager
+
+
+[source,java]
+----
+package org.superbiz.injection.secure.api;
+
+import javax.annotation.security.RunAs;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
+@Metatype
+@Target({ElementType.TYPE, ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+
+@RunAs("Manager")
+public @interface RunAsManager {
+}
+----
+
+
+==  Movie
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+import javax.persistence.Entity;
+
+@Entity
+public class Movie {
+
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+
+}
+----
+
+
+==  Movies
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+//START SNIPPET: code
+
+import org.superbiz.injection.secure.api.AddPermission;
+import org.superbiz.injection.secure.api.DeletePermission;
+import org.superbiz.injection.secure.api.MovieUnit;
+import org.superbiz.injection.secure.api.ReadPermission;
+
+import javax.ejb.Stateful;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.List;
+
+@Stateful
+public class Movies {
+
+    @MovieUnit
+    private EntityManager entityManager;
+
+    @AddPermission
+    public void addMovie(Movie movie) throws Exception {
+        entityManager.persist(movie);
+    }
+
+    @DeletePermission
+    public void deleteMovie(Movie movie) throws Exception {
+        entityManager.remove(movie);
+    }
+
+    @ReadPermission
+    public List<Movie> getMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT m from Movie as m");
+        return query.getResultList();
+    }
+}
+----
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"; version="1.0">
+
+  <persistence-unit name="movie-unit">
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <class>org.superbiz.injection.secure.Movie</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" 
value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+
+==  MovieTest
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+import junit.framework.TestCase;
+import org.superbiz.injection.secure.api.RunAsEmployee;
+import org.superbiz.injection.secure.api.RunAsManager;
+
+import javax.ejb.EJB;
+import javax.ejb.EJBAccessException;
+import javax.ejb.Stateless;
+import javax.ejb.embeddable.EJBContainer;
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.Callable;
+
+//START SNIPPET: code
+
+public class MovieTest extends TestCase {
+
+    @EJB
+    private Movies movies;
+
+    @EJB(beanName = "ManagerBean")
+    private Caller manager;
+
+    @EJB(beanName = "EmployeeBean")
+    private Caller employee;
+
+    protected void setUp() throws Exception {
+        Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        EJBContainer.createEJBContainer(p).getContext().bind("inject", this);
+    }
+
+    public void testAsManager() throws Exception {
+        manager.call(new Callable() {
+            public Object call() throws Exception {
+
+                movies.addMovie(new Movie("Quentin Tarantino", "Reservoir 
Dogs", 1992));
+                movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+                movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 
1998));
+
+                List<Movie> list = movies.getMovies();
+                assertEquals("List.size()", 3, list.size());
+
+                for (Movie movie : list) {
+                    movies.deleteMovie(movie);
+                }
+
+                assertEquals("Movies.getMovies()", 0, 
movies.getMovies().size());
+                return null;
+            }
+        });
+    }
+
+    public void testAsEmployee() throws Exception {
+        employee.call(new Callable() {
+            public Object call() throws Exception {
+
+                movies.addMovie(new Movie("Quentin Tarantino", "Reservoir 
Dogs", 1992));
+                movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+                movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 
1998));
+
+                List<Movie> list = movies.getMovies();
+                assertEquals("List.size()", 3, list.size());
+
+                for (Movie movie : list) {
+                    try {
+                        movies.deleteMovie(movie);
+                        fail("Employees should not be allowed to delete");
+                    } catch (EJBAccessException e) {
+                        // Good, Employees cannot delete things
+                    }
+                }
+
+                // The list should still be three movies long
+                assertEquals("Movies.getMovies()", 3, 
movies.getMovies().size());
+                return null;
+            }
+        });
+    }
+
+    public void testUnauthenticated() throws Exception {
+        try {
+            movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 
1992));
+            fail("Unauthenticated users should not be able to add movies");
+        } catch (EJBAccessException e) {
+            // Good, guests cannot add things
+        }
+
+        try {
+            movies.deleteMovie(null);
+            fail("Unauthenticated users should not be allowed to delete");
+        } catch (EJBAccessException e) {
+            // Good, Unauthenticated users cannot delete things
+        }
+
+        try {
+            // Read access should be allowed
+
+            List<Movie> list = movies.getMovies();
+        } catch (EJBAccessException e) {
+            fail("Read access should be allowed");
+        }
+    }
+
+    public interface Caller {
+        public <V> V call(Callable<V> callable) throws Exception;
+    }
+
+    /**
+     * This little bit of magic allows our test code to execute in
+     * the desired security scope.
+     */
+
+    @Stateless
+    @RunAsManager
+    public static class ManagerBean implements Caller {
+
+        public <V> V call(Callable<V> callable) throws Exception {
+            return callable.call();
+        }
+    }
+
+    @Stateless
+    @RunAsEmployee
+    public static class EmployeeBean implements Caller {
+
+        public <V> V call(Callable<V> callable) throws Exception {
+            return callable.call();
+        }
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.secure.MovieTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/testing-security-meta
+INFO - openejb.base = /Users/dblevins/examples/testing-security-meta
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, 
provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, 
type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, 
provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: 
/Users/dblevins/examples/testing-security-meta/target/classes
+INFO - Found EjbModule in classpath: 
/Users/dblevins/examples/testing-security-meta/target/test-classes
+INFO - Beginning load: 
/Users/dblevins/examples/testing-security-meta/target/classes
+INFO - Beginning load: 
/Users/dblevins/examples/testing-security-meta/target/test-classes
+INFO - Configuring enterprise application: 
/Users/dblevins/examples/testing-security-meta
+INFO - Configuring Service(id=Default Stateful Container, type=Container, 
provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, 
id=Default Stateful Container)
+INFO - Configuring Service(id=Default Stateless Container, type=Container, 
provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean ManagerBean: 
Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, 
provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean 
org.superbiz.injection.secure.MovieTest: Container(type=MANAGED, id=Default 
Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 
'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, 
provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource 
ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/examples/testing-security-meta" 
loaded.
+INFO - Assembling app: /Users/dblevins/examples/testing-security-meta
+INFO - PersistenceUnit(name=movie-unit, 
provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider 
time 419ms
+INFO - 
Jndi(name="java:global/testing-security-meta/Movies!org.superbiz.injection.secure.Movies")
+INFO - Jndi(name="java:global/testing-security-meta/Movies")
+INFO - 
Jndi(name="java:global/testing-security-meta/ManagerBean!org.superbiz.injection.secure.MovieTest$Caller")
+INFO - Jndi(name="java:global/testing-security-meta/ManagerBean")
+INFO - 
Jndi(name="java:global/testing-security-meta/EmployeeBean!org.superbiz.injection.secure.MovieTest$Caller")
+INFO - Jndi(name="java:global/testing-security-meta/EmployeeBean")
+INFO - 
Jndi(name="java:global/EjbModule53489605/org.superbiz.injection.secure.MovieTest!org.superbiz.injection.secure.MovieTest")
+INFO - 
Jndi(name="java:global/EjbModule53489605/org.superbiz.injection.secure.MovieTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default 
Stateful Container)
+INFO - Created Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, 
container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=EmployeeBean, ejb-name=EmployeeBean, 
container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.injection.secure.MovieTest, 
ejb-name=org.superbiz.injection.secure.MovieTest, container=Default Managed 
Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default 
Stateful Container)
+INFO - Started Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, 
container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=EmployeeBean, ejb-name=EmployeeBean, 
container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.injection.secure.MovieTest, 
ejb-name=org.superbiz.injection.secure.MovieTest, container=Default Managed 
Container)
+INFO - Deployed 
Application(path=/Users/dblevins/examples/testing-security-meta)
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow 
reinitialization
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow 
reinitialization
+Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.754 sec
+
+Results :
+
+Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    

http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/testing-security.adoc
----------------------------------------------------------------------
diff --git a/src/main/jbake/content/examples/testing-security.adoc 
b/src/main/jbake/content/examples/testing-security.adoc
new file mode 100755
index 0000000..657ea8b
--- /dev/null
+++ b/src/main/jbake/content/examples/testing-security.adoc
@@ -0,0 +1,336 @@
+= Testing Security
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example testing-security can be browsed at 
https://github.com/apache/tomee/tree/master/examples/testing-security
+
+
+*Help us document this example! Click the blue pencil icon in the upper right 
to edit this page.*
+
+==  Movie
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+import javax.persistence.Entity;
+
+@Entity
+public class Movie {
+
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+
+}
+----
+
+
+==  Movies
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+//START SNIPPET: code
+
+import javax.annotation.security.PermitAll;
+import javax.annotation.security.RolesAllowed;
+import javax.ejb.Stateful;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.TransactionAttributeType;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import javax.persistence.Query;
+import java.util.List;
+
+@Stateful
+public class Movies {
+
+    @PersistenceContext(unitName = "movie-unit", type = 
PersistenceContextType.EXTENDED)
+    private EntityManager entityManager;
+
+    @RolesAllowed({"Employee", "Manager"})
+    public void addMovie(Movie movie) throws Exception {
+        entityManager.persist(movie);
+    }
+
+    @RolesAllowed({"Manager"})
+    public void deleteMovie(Movie movie) throws Exception {
+        entityManager.remove(movie);
+    }
+
+    @PermitAll
+    @TransactionAttribute(TransactionAttributeType.SUPPORTS)
+    public List<Movie> getMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT m from Movie as m");
+        return query.getResultList();
+    }
+}
+----
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"; version="1.0">
+
+  <persistence-unit name="movie-unit">
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <class>org.superbiz.injection.secure.Movie</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" 
value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+
+==  MovieTest
+
+
+[source,java]
+----
+package org.superbiz.injection.secure;
+
+import junit.framework.TestCase;
+
+import javax.annotation.security.RunAs;
+import javax.ejb.EJB;
+import javax.ejb.EJBAccessException;
+import javax.ejb.Stateless;
+import javax.ejb.embeddable.EJBContainer;
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.Callable;
+
+//START SNIPPET: code
+
+public class MovieTest extends TestCase {
+
+    @EJB
+    private Movies movies;
+
+    @EJB(name = "ManagerBean")
+    private Caller manager;
+
+    @EJB(name = "EmployeeBean")
+    private Caller employee;
+
+    protected void setUp() throws Exception {
+        Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        EJBContainer.createEJBContainer(p).getContext().bind("inject", this);
+    }
+
+    public void testAsManager() throws Exception {
+        manager.call(new Callable() {
+            public Object call() throws Exception {
+
+                movies.addMovie(new Movie("Quentin Tarantino", "Reservoir 
Dogs", 1992));
+                movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+                movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 
1998));
+
+                List<Movie> list = movies.getMovies();
+                assertEquals("List.size()", 3, list.size());
+
+                for (Movie movie : list) {
+                    movies.deleteMovie(movie);
+                }
+
+                assertEquals("Movies.getMovies()", 0, 
movies.getMovies().size());
+                return null;
+            }
+        });
+    }
+
+    public void testAsEmployee() throws Exception {
+        employee.call(new Callable() {
+            public Object call() throws Exception {
+
+                movies.addMovie(new Movie("Quentin Tarantino", "Reservoir 
Dogs", 1992));
+                movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+                movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 
1998));
+
+                List<Movie> list = movies.getMovies();
+                assertEquals("List.size()", 3, list.size());
+
+                for (Movie movie : list) {
+                    try {
+                        movies.deleteMovie(movie);
+                        fail("Employees should not be allowed to delete");
+                    } catch (EJBAccessException e) {
+                        // Good, Employees cannot delete things
+                    }
+                }
+
+                // The list should still be three movies long
+                assertEquals("Movies.getMovies()", 3, 
movies.getMovies().size());
+                return null;
+            }
+        });
+    }
+
+    public void testUnauthenticated() throws Exception {
+        try {
+            movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 
1992));
+            fail("Unauthenticated users should not be able to add movies");
+        } catch (EJBAccessException e) {
+            // Good, guests cannot add things
+        }
+
+        try {
+            movies.deleteMovie(null);
+            fail("Unauthenticated users should not be allowed to delete");
+        } catch (EJBAccessException e) {
+            // Good, Unauthenticated users cannot delete things
+        }
+
+        try {
+            // Read access should be allowed
+
+            List<Movie> list = movies.getMovies();
+        } catch (EJBAccessException e) {
+            fail("Read access should be allowed");
+        }
+    }
+
+
+    public static interface Caller {
+        public <V> V call(Callable<V> callable) throws Exception;
+    }
+
+    /**
+     * This little bit of magic allows our test code to execute in
+     * the desired security scope.
+     */
+
+    @Stateless
+    @RunAs("Manager")
+    public static class ManagerBean implements Caller {
+
+        public <V> V call(Callable<V> callable) throws Exception {
+            return callable.call();
+        }
+    }
+
+    @Stateless
+    @RunAs("Employee")
+    public static class EmployeeBean implements Caller {
+
+        public <V> V call(Callable<V> callable) throws Exception {
+            return callable.call();
+        }
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.secure.MovieTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/testing-security
+INFO - openejb.base = /Users/dblevins/examples/testing-security
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, 
provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, 
type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, 
provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: 
/Users/dblevins/examples/testing-security/target/classes
+INFO - Found EjbModule in classpath: 
/Users/dblevins/examples/testing-security/target/test-classes
+INFO - Beginning load: /Users/dblevins/examples/testing-security/target/classes
+INFO - Beginning load: 
/Users/dblevins/examples/testing-security/target/test-classes
+INFO - Configuring enterprise application: 
/Users/dblevins/examples/testing-security
+INFO - Configuring Service(id=Default Stateful Container, type=Container, 
provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, 
id=Default Stateful Container)
+INFO - Configuring Service(id=Default Stateless Container, type=Container, 
provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean ManagerBean: 
Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, 
provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean 
org.superbiz.injection.secure.MovieTest: Container(type=MANAGED, id=Default 
Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 
'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, 
provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource 
ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/examples/testing-security" 
loaded.
+INFO - Assembling app: /Users/dblevins/examples/testing-security
+INFO - PersistenceUnit(name=movie-unit, 
provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider 
time 405ms
+INFO - 
Jndi(name="java:global/testing-security/Movies!org.superbiz.injection.secure.Movies")
+INFO - Jndi(name="java:global/testing-security/Movies")
+INFO - 
Jndi(name="java:global/testing-security/ManagerBean!org.superbiz.injection.secure.MovieTest$Caller")
+INFO - Jndi(name="java:global/testing-security/ManagerBean")
+INFO - 
Jndi(name="java:global/testing-security/EmployeeBean!org.superbiz.injection.secure.MovieTest$Caller")
+INFO - Jndi(name="java:global/testing-security/EmployeeBean")
+INFO - 
Jndi(name="java:global/EjbModule26174809/org.superbiz.injection.secure.MovieTest!org.superbiz.injection.secure.MovieTest")
+INFO - 
Jndi(name="java:global/EjbModule26174809/org.superbiz.injection.secure.MovieTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default 
Stateful Container)
+INFO - Created Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, 
container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=EmployeeBean, ejb-name=EmployeeBean, 
container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.injection.secure.MovieTest, 
ejb-name=org.superbiz.injection.secure.MovieTest, container=Default Managed 
Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default 
Stateful Container)
+INFO - Started Ejb(deployment-id=ManagerBean, ejb-name=ManagerBean, 
container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=EmployeeBean, ejb-name=EmployeeBean, 
container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.injection.secure.MovieTest, 
ejb-name=org.superbiz.injection.secure.MovieTest, container=Default Managed 
Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/testing-security)
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow 
reinitialization
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow 
reinitialization
+Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.574 sec
+
+Results :
+
+Tests run: 3, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    

http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/testing-transactions-bmt.adoc
----------------------------------------------------------------------
diff --git a/src/main/jbake/content/examples/testing-transactions-bmt.adoc 
b/src/main/jbake/content/examples/testing-transactions-bmt.adoc
new file mode 100755
index 0000000..010f218
--- /dev/null
+++ b/src/main/jbake/content/examples/testing-transactions-bmt.adoc
@@ -0,0 +1,280 @@
+= Testing Transactions BMT
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example testing-transactions-bmt can be browsed at 
https://github.com/apache/tomee/tree/master/examples/testing-transactions-bmt
+
+
+Shows how to begin, commit and rollback transactions using a UserTransaction 
via a Stateful Bean.
+
+==  Movie
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+@Entity
+public class Movie {
+
+    @Id
+    @GeneratedValue
+    private Long id;
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public Movie() {
+
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+}
+----
+
+
+==  Movies
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import javax.annotation.Resource;
+import javax.ejb.Stateful;
+import javax.ejb.TransactionManagement;
+import javax.ejb.TransactionManagementType;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import javax.persistence.Query;
+import javax.transaction.UserTransaction;
+
+@Stateful(name = "Movies")
+@TransactionManagement(TransactionManagementType.BEAN)
+public class Movies {
+
+    @PersistenceContext(unitName = "movie-unit", type = 
PersistenceContextType.TRANSACTION)
+    private EntityManager entityManager;
+
+    @Resource
+    private UserTransaction userTransaction;
+
+    public void addMovie(Movie movie) throws Exception {
+        try {
+            userTransaction.begin();
+            entityManager.persist(movie);
+
+            //For some dummy reason, this db can have only 5 titles. :O)
+            if (countMovies() > 5) {
+                userTransaction.rollback();
+            } else {
+                userTransaction.commit();
+            }
+
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            userTransaction.rollback();
+        }
+    }
+
+    public Long countMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT COUNT(m) FROM Movie 
m");
+        return Long.class.cast(query.getSingleResult());
+    }
+}
+----
+
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"; version="1.0">
+
+  <persistence-unit name="movie-unit">
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <class>org.superbiz.injection.tx.Movie</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" 
value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+
+==  MoviesTest
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import javax.ejb.EJB;
+import javax.ejb.embeddable.EJBContainer;
+import java.util.Properties;
+
+public class MoviesTest {
+
+    @EJB
+    private Movies movies;
+
+    @Test
+    public void testMe() throws Exception {
+        final Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        EJBContainer.createEJBContainer(p).getContext().bind("inject", this);
+
+        movies.addMovie(new Movie("Asif Kapadia", "Senna", 2010));
+        movies.addMovie(new Movie("José Padilha", "Tropa de Elite", 2007));
+        movies.addMovie(new Movie("Andy Wachowski/Lana Wachowski", "The 
Matrix", 1999));
+        movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 
1992));
+        movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+        movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+        Assert.assertEquals(5L, movies.countMovies().longValue());
+    }
+
+}
+----
+
+
+
+=  Running
+
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.tx.MoviesTest
+INFO - 
********************************************************************************
+INFO - OpenEJB http://tomee.apache.org/
+INFO - Startup: Sat Jul 21 16:39:28 EDT 2012
+INFO - Copyright 1999-2012 (C) Apache OpenEJB Project, All Rights Reserved.
+INFO - Version: 4.1.0
+INFO - Build date: 20120721
+INFO - Build time: 12:06
+INFO - 
********************************************************************************
+INFO - openejb.home = 
/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt
+INFO - openejb.base = 
/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt
+INFO - Created new singletonService 
org.apache.openejb.cdi.ThreadSingletonServiceImpl@3f3f210f
+INFO - Succeeded in installing singleton service
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to 
create one for the beans deployed.
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, 
provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, 
type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, 
provider-id=Default JDBC Database)
+INFO - Creating TransactionManager(id=Default Transaction Manager)
+INFO - Creating SecurityService(id=Default Security Service)
+INFO - Creating Resource(id=movieDatabase)
+INFO - Beginning load: 
/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt/target/classes
+INFO - Configuring enterprise application: 
/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt
+WARNING - Method 'lookup' is not available for 'javax.annotation.Resource'. 
Probably using an older Runtime.
+INFO - Auto-deploying ejb Movies: EjbDeployment(deployment-id=Movies)
+INFO - Configuring Service(id=Default Stateful Container, type=Container, 
provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, 
id=Default Stateful Container)
+INFO - Creating Container(id=Default Stateful Container)
+INFO - Using directory /tmp for stateful session passivation
+INFO - Configuring Service(id=Default Managed Container, type=Container, 
provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean 
org.superbiz.injection.tx.MoviesTest: Container(type=MANAGED, id=Default 
Managed Container)
+INFO - Creating Container(id=Default Managed Container)
+INFO - Using directory /tmp for stateful session passivation
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 
'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, 
provider-id=movieDatabase)
+INFO - Creating Resource(id=movieDatabaseNonJta)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource 
ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application 
"/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt" 
loaded.
+INFO - Assembling app: 
/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt
+SEVERE - JAVA AGENT NOT INSTALLED. The JPA Persistence Provider requested 
installation of a ClassFileTransformer which requires a JavaAgent.  See 
http://tomee.apache.org/3.0/javaagent.html
+INFO - PersistenceUnit(name=movie-unit, 
provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider 
time 399ms
+INFO - 
Jndi(name="java:global/testing-transactions-bmt/Movies!org.superbiz.injection.tx.Movies")
+INFO - Jndi(name="java:global/testing-transactions-bmt/Movies")
+INFO - Existing thread singleton service in SystemInstance() 
org.apache.openejb.cdi.ThreadSingletonServiceImpl@3f3f210f
+INFO - OpenWebBeans Container is starting...
+INFO - Adding OpenWebBeansPlugin : [CdiPlugin]
+INFO - All injection points are validated successfully.
+INFO - OpenWebBeans Container has started, it took 157 ms.
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default 
Stateful Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default 
Stateful Container)
+INFO - Deployed 
Application(path=/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt)
+INFO - Started user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@709a1411
+21-Jul-2012 4:39:32 PM null openjpa.Runtime
+INFO: Starting OpenJPA 2.2.0
+21-Jul-2012 4:39:32 PM null openjpa.jdbc.JDBC
+INFO: Using dictionary class "org.apache.openjpa.jdbc.sql.HSQLDictionary" 
(HSQL Database Engine 2.2.8 ,HSQL Database Engine Driver 2.2.8).
+21-Jul-2012 4:39:33 PM null openjpa.Enhance
+INFO: Creating subclass and redefining methods for "[class 
org.superbiz.injection.tx.Movie]". This means that your application will be 
less efficient than it would if you ran the OpenJPA enhancer.
+INFO - Committing user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@709a1411
+INFO - Started user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@2bb64b70
+INFO - Committing user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@2bb64b70
+INFO - Started user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@627b5c
+INFO - Committing user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@627b5c
+INFO - Started user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@2f031310
+INFO - Committing user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@2f031310
+INFO - Started user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@4df2a9da
+INFO - Committing user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@4df2a9da
+INFO - Started user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@3fa9b4a4
+INFO - Rolling back user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@3fa9b4a4
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.471 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+

http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/testing-transactions.adoc
----------------------------------------------------------------------
diff --git a/src/main/jbake/content/examples/testing-transactions.adoc 
b/src/main/jbake/content/examples/testing-transactions.adoc
new file mode 100755
index 0000000..a32ce8f
--- /dev/null
+++ b/src/main/jbake/content/examples/testing-transactions.adoc
@@ -0,0 +1,279 @@
+= Testing Transactions
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example testing-transactions can be browsed at 
https://github.com/apache/tomee/tree/master/examples/testing-transactions
+
+
+*Help us document this example! Click the blue pencil icon in the upper right 
to edit this page.*
+
+==  Movie
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import javax.persistence.Entity;
+
+@Entity
+public class Movie {
+
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+
+}
+----
+
+
+==  Movies
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import javax.ejb.Stateful;
+import javax.ejb.TransactionAttribute;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import javax.persistence.Query;
+import java.util.List;
+
+import static javax.ejb.TransactionAttributeType.MANDATORY;
+
+//START SNIPPET: code
+@Stateful(name = "Movies")
+@TransactionAttribute(MANDATORY)
+public class Movies {
+
+    @PersistenceContext(unitName = "movie-unit", type = 
PersistenceContextType.TRANSACTION)
+    private EntityManager entityManager;
+
+    public void addMovie(Movie movie) throws Exception {
+        entityManager.persist(movie);
+    }
+
+    public void deleteMovie(Movie movie) throws Exception {
+        entityManager.remove(movie);
+    }
+
+    public List<Movie> getMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT m from Movie as m");
+        return query.getResultList();
+    }
+}
+----
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"; version="1.0">
+
+  <persistence-unit name="movie-unit">
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <class>org.superbiz.injection.tx.Movie</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" 
value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+
+==  MoviesTest
+
+
+[source,java]
+----
+package org.superbiz.injection.tx;
+
+import junit.framework.TestCase;
+
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.embeddable.EJBContainer;
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.Callable;
+
+import static javax.ejb.TransactionAttributeType.REQUIRES_NEW;
+
+/**
+ * See the transaction-rollback example as it does the same thing
+ * via UserTransaction and shows more techniques for rollback 
+ */
+//START SNIPPET: code
+public class MoviesTest extends TestCase {
+
+    @EJB
+    private Movies movies;
+
+    @EJB
+    private Caller transactionalCaller;
+
+    protected void setUp() throws Exception {
+        final Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        EJBContainer.createEJBContainer(p).getContext().bind("inject", this);
+    }
+
+    private void doWork() throws Exception {
+
+        movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 
1992));
+        movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+        movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+        List<Movie> list = movies.getMovies();
+        assertEquals("List.size()", 3, list.size());
+
+        for (Movie movie : list) {
+            movies.deleteMovie(movie);
+        }
+
+        assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
+    }
+
+    public void testWithTransaction() throws Exception {
+        transactionalCaller.call(new Callable() {
+            public Object call() throws Exception {
+                doWork();
+                return null;
+            }
+        });
+    }
+
+    public void testWithoutTransaction() throws Exception {
+        try {
+            doWork();
+            fail("The Movies bean should be using 
TransactionAttributeType.MANDATORY");
+        } catch (javax.ejb.EJBTransactionRequiredException e) {
+            // good, our Movies bean is using 
TransactionAttributeType.MANDATORY as we want
+        }
+    }
+
+
+    public static interface Caller {
+        public <V> V call(Callable<V> callable) throws Exception;
+    }
+
+    /**
+     * This little bit of magic allows our test code to execute in
+     * the scope of a container controlled transaction.
+     */
+    @Stateless
+    @TransactionAttribute(REQUIRES_NEW)
+    public static class TransactionBean implements Caller {
+
+        public <V> V call(Callable<V> callable) throws Exception {
+            return callable.call();
+        }
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.tx.MoviesTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/testing-transactions
+INFO - openejb.base = /Users/dblevins/examples/testing-transactions
+INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+INFO - Configuring Service(id=Default Security Service, type=SecurityService, 
provider-id=Default Security Service)
+INFO - Configuring Service(id=Default Transaction Manager, 
type=TransactionManager, provider-id=Default Transaction Manager)
+INFO - Configuring Service(id=movieDatabase, type=Resource, 
provider-id=Default JDBC Database)
+INFO - Found EjbModule in classpath: 
/Users/dblevins/examples/testing-transactions/target/classes
+INFO - Found EjbModule in classpath: 
/Users/dblevins/examples/testing-transactions/target/test-classes
+INFO - Beginning load: 
/Users/dblevins/examples/testing-transactions/target/classes
+INFO - Beginning load: 
/Users/dblevins/examples/testing-transactions/target/test-classes
+INFO - Configuring enterprise application: 
/Users/dblevins/examples/testing-transactions
+INFO - Configuring Service(id=Default Stateful Container, type=Container, 
provider-id=Default Stateful Container)
+INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, 
id=Default Stateful Container)
+INFO - Configuring Service(id=Default Stateless Container, type=Container, 
provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean TransactionBean: 
Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=Default Managed Container, type=Container, 
provider-id=Default Managed Container)
+INFO - Auto-creating a container for bean 
org.superbiz.injection.tx.MoviesTest: Container(type=MANAGED, id=Default 
Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit)
+INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 
'DataSource for 'movie-unit'.
+INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, 
provider-id=movieDatabase)
+INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource 
ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+INFO - Enterprise application "/Users/dblevins/examples/testing-transactions" 
loaded.
+INFO - Assembling app: /Users/dblevins/examples/testing-transactions
+INFO - PersistenceUnit(name=movie-unit, 
provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider 
time 406ms
+INFO - 
Jndi(name="java:global/testing-transactions/Movies!org.superbiz.injection.tx.Movies")
+INFO - Jndi(name="java:global/testing-transactions/Movies")
+INFO - 
Jndi(name="java:global/testing-transactions/TransactionBean!org.superbiz.injection.tx.MoviesTest$Caller")
+INFO - Jndi(name="java:global/testing-transactions/TransactionBean")
+INFO - 
Jndi(name="java:global/EjbModule2036741132/org.superbiz.injection.tx.MoviesTest!org.superbiz.injection.tx.MoviesTest")
+INFO - 
Jndi(name="java:global/EjbModule2036741132/org.superbiz.injection.tx.MoviesTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default 
Stateful Container)
+INFO - Created Ejb(deployment-id=TransactionBean, ejb-name=TransactionBean, 
container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.injection.tx.MoviesTest, 
ejb-name=org.superbiz.injection.tx.MoviesTest, container=Default Managed 
Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default 
Stateful Container)
+INFO - Started Ejb(deployment-id=TransactionBean, ejb-name=TransactionBean, 
container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.injection.tx.MoviesTest, 
ejb-name=org.superbiz.injection.tx.MoviesTest, container=Default Managed 
Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/testing-transactions)
+INFO - EJBContainer already initialized.  Call ejbContainer.close() to allow 
reinitialization
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.403 sec
+
+Results :
+
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    

http://git-wip-us.apache.org/repos/asf/tomee-tomee-site-generator/blob/972cc356/src/main/jbake/content/examples/tomee-jersey-eclipselink.adoc
----------------------------------------------------------------------
diff --git a/src/main/jbake/content/examples/tomee-jersey-eclipselink.adoc 
b/src/main/jbake/content/examples/tomee-jersey-eclipselink.adoc
new file mode 100755
index 0000000..adb73b0
--- /dev/null
+++ b/src/main/jbake/content/examples/tomee-jersey-eclipselink.adoc
@@ -0,0 +1,9 @@
+= tomee-jersey-eclipselink
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example tomee-jersey-eclipselink can be browsed at 
https://github.com/apache/tomee/tree/master/examples/tomee-jersey-eclipselink
+
+No README.md yet, be the first to contribute one!

Reply via email to