Merge pull request #703 from jrxxjr/TOMEE-2895

TOMEE-2895 Translate to Portuguese: examples/rest-xml-json
diff --git a/examples/injection-of-ejbs/README.adoc b/examples/injection-of-ejbs/README.adoc
index ff4d61c..9c10add 100644
--- a/examples/injection-of-ejbs/README.adoc
+++ b/examples/injection-of-ejbs/README.adoc
@@ -3,12 +3,12 @@
 :jbake-status: status=published
 = Injection Of Ejbs
 
-This example shows how to use the @EJB annotation on a bean class to
+This example shows how to use the `@EJB` annotation on a bean class to
 refer to other beans.
 
 This functionality is often referred as dependency injection (see
 http://www.martinfowler.com/articles/injection.html), and has been
-recently introduced in Java EE 5.
+introduced in Java EE 5.
 
 In this particular example, we will create two session stateless beans
 
@@ -17,7 +17,7 @@
 
 The DataReader bean uses the DataStore to retrieve some informations,
 and we will see how we can, inside the DataReader bean, get a reference
-to the DataStore bean using the @EJB annotation, thus avoiding the use
+to the DataStore bean using the `@EJB` annotation, thus avoiding the use
 of the JNDI API.
 
 == DataReader
@@ -44,7 +44,7 @@
  * this means that the application server, at runtime, will inject in this instance
  * variable a reference to the EJB DataStoreLocal
  */
-//START SNIPPET: code
+
 @Stateless
 public class DataReader {
 
@@ -85,7 +85,7 @@
  * This EJB has 2 business interfaces: DataStoreRemote, a remote business
  * interface, and DataStoreLocal, a local business interface
  */
-//START SNIPPET: code
+
 @Stateless
 @LocalBean
 public class DataStore implements DataStoreLocal, DataStoreRemote {
@@ -110,7 +110,7 @@
  * annotation, but it's optional. A business interface which is
  * not annotated with @Local or @Remote is assumed to be Local
  */
-//START SNIPPET: code
+
 @Local
 public interface DataStoreLocal {
 
@@ -131,7 +131,7 @@
  * A remote business interface must be annotated with the @Remote
  * annotation
  */
-//START SNIPPET: code
+
 @Remote
 public interface DataStoreRemote {
 
@@ -153,7 +153,7 @@
 /**
  * A test case for DataReaderImpl ejb, testing both the remote and local interface
  */
-//START SNIPPET: code
+
 public class EjbDependencyTest extends TestCase {
 
     public void test() throws Exception {
diff --git a/examples/injection-of-ejbs/README_es.adoc b/examples/injection-of-ejbs/README_es.adoc
new file mode 100644
index 0000000..f4abb14
--- /dev/null
+++ b/examples/injection-of-ejbs/README_es.adoc
@@ -0,0 +1,216 @@
+:index-group: Referencing EJBs
+:jbake-type: page
+:jbake-status: status=published
+= Inyección de Ejbs
+
+Este ejemplo muestra cómo usar la anotación `@EJB` en una clase de bean para
+referenciar otros beans.
+
+Esta funcionalidad a menudo se denomina inyección de dependencia (consulte
+http://www.martinfowler.com/articles/injection.html), y ha sido
+introducido en Java EE 5.
+
+En este ejemplo particular, crearemos dos beans de sesión sin estado (stateless) 
+
+* un bean de sesión de DataStore
+* un bean de sesión DataReader
+
+El bean DataReader usa el bean DataStore para recuperar información,
+dentro del bean DataReader se obtiene una referencia
+al bean DataStore usando la anotación `@EJB`, evitando así el uso
+de la API JNDI.
+
+== DataReader
+
+[source,java]
+----
+package org.superbiz.injection;
+
+import javax.ejb.EJB;
+import javax.ejb.Stateless;
+
+/**
+ * Este es un bean pojo sesión sin estado estilo EJB 3.1
+ * Cada implementación de bean de sesión sin estado debe estar anotada
+ * usando la anotación @Stateless
+ * Este EJB tiene 2 interfaces de negocio: DataReaderRemote, una interfaz remota
+ *  negocio y DataReaderLocal, una interfaz de nogocio local
+ * <p />
+ * Las variables de instancia 'dataStoreRemote' están anotadas con la anotación @EJB:
+ * esto significa que el servidor de aplicaciones, en tiempo de ejecución, inyectará en esta instancia variable una referencia al EJB DataStoreRemote
+ * <p />
+ * Las variables de instancia 'dataStoreLocal' están anotadas con la anotación @EJB:
+ * esto significa que el servidor de aplicaciones, en tiempo de ejecución inyectará en esta instancia
+ * variable una referencia a EJB DataStoreLocal
+ */
+
+@Stateless
+public class DataReader {
+
+    @EJB
+    private DataStoreRemote dataStoreRemote;
+    @EJB
+    private DataStoreLocal dataStoreLocal;
+    @EJB
+    private DataStore dataStore;
+
+    public String readDataFromLocalStore() {
+        return "LOCAL:" + dataStoreLocal.getData();
+    }
+
+    public String readDataFromLocalBeanStore() {
+        return "LOCALBEAN:" + dataStore.getData();
+    }
+
+    public String readDataFromRemoteStore() {
+        return "REMOTE:" + dataStoreRemote.getData();
+    }
+}
+----
+
+== DataStore
+
+[source,java]
+----
+package org.superbiz.injection;
+
+import javax.ejb.LocalBean;
+import javax.ejb.Stateless;
+
+/**
+ * Este es un bean pojo de sesión sin estado estilo EJB 3
+ * Cada implementación de bean de sesión sin estado debe estar anotada
+ * usando la anotación @Stateless
+ * Este EJB tiene 2 interfaces de negocio: DataStoreRemote, una interfaz de negocio remota
+ * y DataStoreLocal, una interfaz de negocio local
+ */
+
+@Stateless
+@LocalBean
+public class DataStore implements DataStoreLocal, DataStoreRemote {
+
+    public String getData() {
+        return "42";
+    }
+}
+----
+
+== DataStoreLocal
+
+[source,java]
+----
+package org.superbiz.injection;
+
+import javax.ejb.Local;
+
+/**
+ * Esta es una interfaz de negociolocal EJB 3
+ * Una interfaz de negocio local se puede anotar con la anotación @Local,
+ * @Local es una anotación opcional. Una interfaz de negocio que
+ * no esta anotado con @Local o @Remote se supone se asume como Local
+ */
+
+@Local
+public interface DataStoreLocal {
+
+    public String getData();
+}
+----
+
+== DataStoreRemote
+
+[source,java]
+----
+package org.superbiz.injection;
+
+import javax.ejb.Remote;
+
+/**
+ * Esta es una interfaz de negocio remota EJB 3
+ * Se debe anotar una interfaz de negocio remota con la anotación @Remote
+ */
+
+@Remote
+public interface DataStoreRemote {
+
+    public String getData();
+}
+----
+
+== EjbDependencyTest
+
+[source,java]
+----
+package org.superbiz.injection;
+
+import junit.framework.TestCase;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+
+/**
+ * Un caso de prueba para DataReaderImpl ejb, probando tanto la interfaz remota 
+ * como la local
+ */
+
+public class EjbDependencyTest extends TestCase {
+
+    public void test() throws Exception {
+        final Context context = EJBContainer.createEJBContainer().getContext();
+
+        DataReader dataReader = (DataReader) context.lookup("java:global/injection-of-ejbs/DataReader");
+
+        assertNotNull(dataReader);
+
+        assertEquals("LOCAL:42", dataReader.readDataFromLocalStore());
+        assertEquals("REMOTE:42", dataReader.readDataFromRemoteStore());
+        assertEquals("LOCALBEAN:42", dataReader.readDataFromLocalBeanStore());
+    }
+}
+----
+
+== Ejecución
+
+[source,console]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.EjbDependencyTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/injection-of-ejbs
+INFO - openejb.base = /Users/dblevins/examples/injection-of-ejbs
+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 - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-ejbs/target/classes
+INFO - Beginning load: /Users/dblevins/examples/injection-of-ejbs/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-ejbs
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean DataReader: 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.EjbDependencyTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Enterprise application "/Users/dblevins/examples/injection-of-ejbs" loaded.
+INFO - Assembling app: /Users/dblevins/examples/injection-of-ejbs
+INFO - Jndi(name="java:global/injection-of-ejbs/DataReader!org.superbiz.injection.DataReader")
+INFO - Jndi(name="java:global/injection-of-ejbs/DataReader")
+INFO - Jndi(name="java:global/injection-of-ejbs/DataStore!org.superbiz.injection.DataStore")
+INFO - Jndi(name="java:global/injection-of-ejbs/DataStore!org.superbiz.injection.DataStoreLocal")
+INFO - Jndi(name="java:global/injection-of-ejbs/DataStore!org.superbiz.injection.DataStoreRemote")
+INFO - Jndi(name="java:global/injection-of-ejbs/DataStore")
+INFO - Jndi(name="java:global/EjbModule355598874/org.superbiz.injection.EjbDependencyTest!org.superbiz.injection.EjbDependencyTest")
+INFO - Jndi(name="java:global/EjbModule355598874/org.superbiz.injection.EjbDependencyTest")
+INFO - Created Ejb(deployment-id=DataReader, ejb-name=DataReader, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=DataStore, ejb-name=DataStore, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=org.superbiz.injection.EjbDependencyTest, ejb-name=org.superbiz.injection.EjbDependencyTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=DataReader, ejb-name=DataReader, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=DataStore, ejb-name=DataStore, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=org.superbiz.injection.EjbDependencyTest, ejb-name=org.superbiz.injection.EjbDependencyTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-ejbs)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.225 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
diff --git a/examples/injection-of-ejbs/README_pt.adoc b/examples/injection-of-ejbs/README_pt.adoc
index 2ae02d7..a9ef4ff 100644
--- a/examples/injection-of-ejbs/README_pt.adoc
+++ b/examples/injection-of-ejbs/README_pt.adoc
@@ -7,7 +7,7 @@
 
 Essa funcionalidade é geralmente chamada de injeção de dependência (consulte
 http://www.martinfowler.com/articles/injection.html) e foi
-recentemente introduzido no Java EE 5.
+ introduzido no Java EE 5.
 
 Neste exemplo em particular, nós vamos criar dois bean de sessão sem estado
 
diff --git a/examples/injection-of-entitymanager/README_es.adoc b/examples/injection-of-entitymanager/README_es.adoc
new file mode 100644
index 0000000..fbadc35
--- /dev/null
+++ b/examples/injection-of-entitymanager/README_es.adoc
@@ -0,0 +1,233 @@
+= Inyección de Entitymanager
+:index-group: JPA
+:jbake-type: page
+:jbake-status: published
+
+Este ejemplo muestra el uso de `@ PersistenceContext` para tener un` EntityManager` con un
+Contexto de persistencia `EXTENDIDO` inyectado en un` @Stateful bean`. Se usa Un JPA bean `@ Entity` 
+con el ` EntityManager` para crear, persistir y fusionar datos a una base de datos.
+
+== Creando el JPA Entity
+
+La entidad es simplemente un pojo anotado con `@ Entity`. Creamos una clase `Movie` que podemos usar para guardar registros de películas.
+
+[source,java]
+----
+package org.superbiz.injection.jpa;
+
+import javax.persistence.Entity;
+
+@Entity
+public class Movie {
+
+    @Id @GeneratedValue
+    private long id;
+
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    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;
+    }
+}
+----
+
+== Configurando el EntityManager con un archivo persistence.xml
+
+La entidad `Movie` se puede crear, eliminar, o actualizar mediante un objeto` EntityManager`. El `EntityManager` en sí mismo es
+configurado a través de un archivo `META-INF/persistence.xml` que se ubica en el mismo jar que la entidad `Movie`.
+
+[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.jpa.Movie</class>
+
+    <properties>
+      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+Observe que la entidad `Movie` se lista a través de un elemento `<class>`. Esto no es obligatorio, pero puede ayudar durante las pruebas o cuando la clase `Movie` se encuentra en un jar diferente al que contiene el archivo `persistence.xml`.
+
+== Inyección a través de @PersistenceContext
+
+El `EntityManager` en sí mismo es creado por el contenedor utilizando la información en `persistence.xml`, para usarlo en
+tiempo de ejecución, simplemente necesitamos solicitar que se inyecte en uno de nuestros componentes. Hacemos esto a través de 
+la anotación `@ PersistenceContext`
+
+La anotación `@ PersistenceContext` se puede usar en cualquier bean CDI, EJB, Servlet, Servlet Listener, Servlet Filter o JSF ManagedBean. Si no se usa un EJB, sera necesario usar una `UserTransaction` para comenzar (begin) y confirmar (commit) las transacciones manualmente. Se requiere una transacción para que funcione cualquiera de los métodos de creación, actualización o eliminación del EntityManager.
+
+[source,java]
+----
+package org.superbiz.injection.jpa;
+
+import javax.ejb.Stateful;
+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;
+
+    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();
+    }
+}
+----
+
+Este `EntityManager` en particular se inyecta como un contexto de persistencia `EXTENDED`, lo que simplemente significa que el `EntityManager` se crea cuando se crea el bean `@ Stateful` y se destruye cuando se destruye el bean `@Stateful`. En pocas palabras, 
+los datos en el `EntityManager` se almacenan en caché durante la vida útil del bean `@Stateful`.
+
+El uso de contextos de persistencia `EXTENDED` está *solo* disponible para beans `@Stateful`. Consulte el enlace: link:../../jpa-concepts.html[JPA Concepts] para obtener una explicación de alto nivel de lo que realmente es un "contexto de persistencia" y cómo es importante para JPA.
+
+
+== MoviesTest
+
+Probar JPA es bastante fácil, simplemente podemos usar la API `EJBContainer` para crear un contenedor en nuestro caso de prueba.
+
+[source,java]
+----
+package org.superbiz.injection.jpa;
+
+import junit.framework.TestCase;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import java.util.List;
+import java.util.Properties;
+
+//START SNIPPET: code
+public class MoviesTest extends TestCase {
+
+    public void test() 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");
+
+        final Context context = EJBContainer.createEJBContainer(p).getContext();
+
+        Movies movies = (Movies) context.lookup("java:global/injection-of-entitymanager/Movies");
+
+        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());
+    }
+}
+----
+
+= Ejecución
+
+Cuando ejecutamos nuestro caso de prueba, deberíamos ver una salida similar a la siguiente.
+
+[source,console]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.jpa.MoviesTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/injection-of-entitymanager
+INFO - openejb.base = /Users/dblevins/examples/injection-of-entitymanager
+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/injection-of-entitymanager/target/classes
+INFO - Beginning load: /Users/dblevins/examples/injection-of-entitymanager/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-entitymanager
+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.jpa.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/injection-of-entitymanager" loaded.
+INFO - Assembling app: /Users/dblevins/examples/injection-of-entitymanager
+INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 462ms
+INFO - Jndi(name="java:global/injection-of-entitymanager/Movies!org.superbiz.injection.jpa.Movies")
+INFO - Jndi(name="java:global/injection-of-entitymanager/Movies")
+INFO - Jndi(name="java:global/EjbModule1461341140/org.superbiz.injection.jpa.MoviesTest!org.superbiz.injection.jpa.MoviesTest")
+INFO - Jndi(name="java:global/EjbModule1461341140/org.superbiz.injection.jpa.MoviesTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Created Ejb(deployment-id=org.superbiz.injection.jpa.MoviesTest, ejb-name=org.superbiz.injection.jpa.MoviesTest, 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.jpa.MoviesTest, ejb-name=org.superbiz.injection.jpa.MoviesTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-entitymanager)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.301 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
diff --git a/examples/injection-of-env-entry/README_es.adoc b/examples/injection-of-env-entry/README_es.adoc
new file mode 100644
index 0000000..4892a6f
--- /dev/null
+++ b/examples/injection-of-env-entry/README_es.adoc
@@ -0,0 +1,282 @@
+:index-group: Environment Entries
+:jbake-type: page
+:jbake-status: status=published
+= Using EnvEntries
+
+La anotación `@Resource` se puede usar para inyectar varias cosas,
+incluyendo fuentes de datos, temas, colas, etc. La mayoría 
+objetos suministrados por el contenedor.
+
+Sin embargo, es posible proporcionar sus propios valores para inyectarlos mediante una etiqueta
+`<env-entry>` en su descriptor de implementación `ejb-jar.xml` o` web.xml`.
+Los tipos `<env-entry>` compatibles con Java EE 6 están limitados a los siguientes:
+
+* java.lang.String
+* java.lang.Integer
+* java.lang.Short
+* java.lang.Float
+* java.lang.Double
+* java.lang.Byte
+* java.lang.Character
+* java.lang.Boolean
+* java.lang.Class
+* java.lang.Enum (any enum)
+
+Consulte también el ejemplo link:../custom-injection[Custom Injection] para una
+funcionalidad de TomEE y OpenEJB que le permitirá usar más que solo los anteriores
+tipos, así como declarar elementos `<env-entry>` con un archivo de propiedades.
+
+== Usando @Resource para propiedades básicas
+
+El uso de la anotación `@Resource` no se limita a los metodos establecedores (setters). Por
+ejemplo, esta anotación podría haberse utilizado en el correspondiente _campo_ así:
+
+[source,java]
+----
+@Resource
+private int maxLineItems;
+----
+
+Un ejemplo más completo podría verse así:
+
+[source,java]
+----
+package org.superbiz.injection.enventry;
+
+import javax.annotation.Resource;
+import javax.ejb.Singleton;
+import java.util.Date;
+
+@Singleton
+public class Configuration {
+
+    @Resource
+    private String color;
+
+    @Resource
+    private Shape shape;
+
+    @Resource
+    private Class strategy;
+
+    @Resource(name = "date")
+    private long date;
+
+    public String getColor() {
+        return color;
+    }
+
+    public Shape getShape() {
+        return shape;
+    }
+
+    public Class getStrategy() {
+        return strategy;
+    }
+
+    public Date getDate() {
+        return new Date(date);
+    }
+}
+----
+
+Aquí tenemos un bean `@Singleton` llamado `Configuration` que tiene la
+siguientes propiedades (elementos `<env-entry>`)
+
+* String color
+* Shape shape
+* Class strategy
+* long date
+
+=== Suministro de valores de @Resource para elementos en ejb-jar.xml
+
+Los valores de nuestras propiedades de color, forma, estrategia y fecha
+se suministran a través de elementos `<env-entry>` en el archivo `ejb-jar.xml` o
+Archivo `web.xml` así:
+
+[source,xml]
+----
+<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" version="3.0" metadata-complete="false">
+  <enterprise-beans>
+    <session>
+      <ejb-name>Configuration</ejb-name>
+      <env-entry>
+        <env-entry-name>org.superbiz.injection.enventry.Configuration/color</env-entry-name>
+        <env-entry-type>java.lang.String</env-entry-type>
+        <env-entry-value>orange</env-entry-value>
+      </env-entry>
+      <env-entry>
+        <env-entry-name>org.superbiz.injection.enventry.Configuration/shape</env-entry-name>
+        <env-entry-type>org.superbiz.injection.enventry.Shape</env-entry-type>
+        <env-entry-value>TRIANGLE</env-entry-value>
+      </env-entry>
+      <env-entry>
+        <env-entry-name>org.superbiz.injection.enventry.Configuration/strategy</env-entry-name>
+        <env-entry-type>java.lang.Class</env-entry-type>
+        <env-entry-value>org.superbiz.injection.enventry.Widget</env-entry-value>
+      </env-entry>
+      <env-entry>
+        <description>The name was explicitly set in the annotation so the classname prefix isn't required</description>
+        <env-entry-name>date</env-entry-name>
+        <env-entry-type>java.lang.Long</env-entry-type>
+        <env-entry-value>123456789</env-entry-value>
+      </env-entry>
+    </session>
+  </enterprise-beans>
+</ejb-jar>
+----
+
+==== Usando el atributo @Resource `name` 
+
+Tenga en cuenta que  `date` fue referenciada por `nombre` como:
+
+[source,java]
+----
+@Resource(name = "date")
+private long date;
+----
+
+Cuando se utiliza el `@Resource(name)`, no es necesario especificar el
+nombre de clase del bean y puede hacerlo brevemente así:
+
+[source,java]
+----
+  <env-entry>
+    <description>The name was explicitly set in the annotation so the classname prefix is not required</description>
+    <env-entry-name>date</env-entry-name>
+    <env-entry-type>java.lang.Long</env-entry-type>
+    <env-entry-value>123456789</env-entry-value>
+  </env-entry>
+----
+
+Por el contrario, `color` no fue referenciado por `nombre`
+
+[source,java]
+----
+@Resource
+private String color;
+----
+
+Cuando algo no está referenciado por `nombre` en la anotación `@Resource`
+se crea un nombre predeterminado. El formato es esencialmente este:
+
+[source,java]
+----
+bean.getClass() + "/" + field.getName()
+----
+
+Entonces, el `nombre` predeterminado de la propiedad `color` anterior termina siendo
+`org.superbiz.injection.enventry.Configuration/color`. Este es el nombre que
+debemos usar cuando intentamos decalre un valor para él en xml.
+
+[source,java]
+----
+  <env-entry>
+    <env-entry-name>org.superbiz.injection.enventry.Configuration/color</env-entry-name>
+    <env-entry-type>java.lang.String</env-entry-type>
+    <env-entry-value>orange</env-entry-value>
+  </env-entry>
+----
+
+==== @Resource y Enum (enumeraciones)
+
+El campo `shape` es en realidad un tipo Java Enum personalizado
+
+[source,java]
+----
+package org.superbiz.injection.enventry;
+
+public enum Shape {
+
+    CIRCLE,
+    TRIANGLE,
+    SQUARE
+}
+----
+
+A partir de Java EE 6, los tipos java.lang.Enum están permitidos como elementos `<env-entry>`. 
+La declaración de uno en xml se realiza utilizando el nombre de clase de la enumeración real
+al igual que:
+
+[source,java]
+----
+      <env-entry>
+        <env-entry-name>org.superbiz.injection.enventry.Configuration/shape</env-entry-name>
+        <env-entry-type>org.superbiz.injection.enventry.Shape</env-entry-type>
+        <env-entry-value>TRIANGLE</env-entry-value>
+      </env-entry>
+----
+
+¡No use `<env-entry-type> java.lang.Enum </env-entry-type>` o no funcionará!
+
+=== ConfigurationTest
+
+[source,java]
+----
+package org.superbiz.injection.enventry;
+
+import junit.framework.TestCase;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import java.util.Date;
+
+public class ConfigurationTest extends TestCase {
+
+
+    public void test() throws Exception {
+        final Context context = EJBContainer.createEJBContainer().getContext();
+
+        final Configuration configuration = (Configuration) context.lookup("java:global/injection-of-env-entry/Configuration");
+
+        assertEquals("orange", configuration.getColor());
+
+        assertEquals(Shape.TRIANGLE, configuration.getShape());
+
+        assertEquals(Widget.class, configuration.getStrategy());
+
+        assertEquals(new Date(123456789), configuration.getDate());
+    }
+}
+----
+
+== Ejecución 
+
+[source,console]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.enventry.ConfigurationTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/injection-of-env-entry
+INFO - openejb.base = /Users/dblevins/examples/injection-of-env-entry
+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 - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-env-entry/target/classes
+INFO - Beginning load: /Users/dblevins/examples/injection-of-env-entry/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-env-entry
+WARN - Method 'lookup' is not available for 'javax.annotation.Resource'. Probably using an older Runtime.
+INFO - Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)
+INFO - Auto-creating a container for bean Configuration: Container(type=SINGLETON, id=Default Singleton 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.enventry.ConfigurationTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Enterprise application "/Users/dblevins/examples/injection-of-env-entry" loaded.
+INFO - Assembling app: /Users/dblevins/examples/injection-of-env-entry
+INFO - Jndi(name="java:global/injection-of-env-entry/Configuration!org.superbiz.injection.enventry.Configuration")
+INFO - Jndi(name="java:global/injection-of-env-entry/Configuration")
+INFO - Jndi(name="java:global/EjbModule1355224018/org.superbiz.injection.enventry.ConfigurationTest!org.superbiz.injection.enventry.ConfigurationTest")
+INFO - Jndi(name="java:global/EjbModule1355224018/org.superbiz.injection.enventry.ConfigurationTest")
+INFO - Created Ejb(deployment-id=org.superbiz.injection.enventry.ConfigurationTest, ejb-name=org.superbiz.injection.enventry.ConfigurationTest, container=Default Managed Container)
+INFO - Created Ejb(deployment-id=Configuration, ejb-name=Configuration, container=Default Singleton Container)
+INFO - Started Ejb(deployment-id=org.superbiz.injection.enventry.ConfigurationTest, ejb-name=org.superbiz.injection.enventry.ConfigurationTest, container=Default Managed Container)
+INFO - Started Ejb(deployment-id=Configuration, ejb-name=Configuration, container=Default Singleton Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-env-entry)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.664 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
diff --git a/examples/jaxrs-json-provider-jettison/README_es.adoc b/examples/jaxrs-json-provider-jettison/README_es.adoc
new file mode 100644
index 0000000..1087c05
--- /dev/null
+++ b/examples/jaxrs-json-provider-jettison/README_es.adoc
@@ -0,0 +1,154 @@
+= JAX-RS Proveedor JSON con Jettison
+:index-group: REST
+:jbake-type: page
+:jbake-status: status=published
+
+Este es un ejemplo de como configurar en TomEE 7.x o posterior el proveedor antiguo de JSON, Jettison, usado por TomEE 1.7.x.
+
+Este escenario es útil cuando las aplicaciones REST son migradas de TomEE 1.7.x hacia TomEE 7.x o posterior y se desea continuar con la antigua salida JSON de Jettison 1.3.7.
+
+
+=== Corre las pruebas
+Este ejemplo contiene 2 casos de prueba, uno usando Jettison y otro sin él para fines comparativos.
+
+[source,java]
+----
+mvn clean test
+----
+
+
+=== Habilitación de Jettison como proveedor JSON
+
+Debe proporcionar los siguientes 2 archivos en su carpeta WEB-INF:
+
+* openejb-jar.xml
+[source,xml]
+----
+<?xml version="1.0" encoding="UTF-8"?>
+<openejb-jar xmlns="http://www.openejb.org/openejb-jar/1.1">
+    <pojo-deployment class-name="org.superbiz.JAXRSApplication">
+        <properties>
+            cxf.jaxrs.providers = json
+        </properties>
+    </pojo-deployment>
+</openejb-jar>
+
+----
+
+* resources.xml
+
+[source,java]
+----
+
+<?xml version="1.0" encoding="UTF-8"?>
+<resources>
+    <Service id="json" class-name="org.apache.cxf.jaxrs.provider.json.JSONProvider">
+        SkipJaxbChecks = true
+        DropRootElement = false
+        SupportUnwrapped = true
+        SingleJaxbContext = true
+    </Service>
+</resources>
+
+----
+
+Y finalmente asegúrese de que Jettison JAR 1.3.7 esté disponible en la carpeta TomEE / lib.
+
+=== Comparando salidas
+
+`Item.java` es el POJO que vamos a procesar:
+
+[source,java]
+----
+package org.superbiz;
+
+import javax.xml.bind.annotation.*;
+
+@XmlRootElement(name = "book")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class Item {
+
+    @XmlValue
+    private String name;
+
+    @XmlAttribute
+    private int id;
+
+    @XmlAttribute
+    private String availableSince;
+
+    @XmlAttribute
+    private boolean available = false;
+
+    public Item() {
+    }
+
+    public Item(String name, int id, String availableSince, boolean available) {
+        this.name = name;
+        this.id = id;
+        this.availableSince = availableSince;
+        this.available = available;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getAvailableSince() {
+        return availableSince;
+    }
+
+    public void setAvailableSince(String availableSince) {
+        this.availableSince = availableSince;
+    }
+
+    public boolean isAvailable() {
+        return available;
+    }
+
+    public void setAvailable(boolean available) {
+        this.available = available;
+    }
+}
+----
+
+
+Antigua salida JSON usando Jetty 1.3.7:
+[source,java]
+----
+{"book":{"@id":"134","@availableSince":"2019-05-27 15:27:16.878","@available":"false","$":"TomEE Tutorial"}}
+----
+
+Actual salida JSON:
+
+[source,java]
+----
+{"available":false,"availableSince":"2019-05-27 15:27:16.878","id":134,"name":"TomEE Tutorial"}
+----
+
+=== Acerca de la arquitectura de prueba
+
+Los casos de prueba de este proyecto se construyen utilizando Arquillian y TomEE
+Remote. La configuración de arquillian puede ser encontrada en
+`src/test/resources/arquillian.xml`
+
+Una parte importante de esta configuración es la inclusión de Jettison jar durante la ejecución de la prueba:
+
+[source,xml]
+----
+<property name="additionalLibs">mvn:org.codehaus.jettison:jettison:1.3.7</property>
+----
+
+Si se usa una versión > 1.3.7, la salida JSON empieza a cambiar a un formato predeterminado moderno: Los valores booleanos y numericos ya no están entre comillas dobles.
\ No newline at end of file
diff --git a/examples/quartz-app/README.adoc b/examples/quartz-app/README.adoc
index e0e15aa..6c9623b 100644
--- a/examples/quartz-app/README.adoc
+++ b/examples/quartz-app/README.adoc
@@ -3,7 +3,7 @@
 :jbake-status: status=published
 = Quartz Resource Adapter usage
 
-Note: this example is somewhat dated. It predates the schedule API which
+NOTE: this example is somewhat dated. It predates the schedule API which
 was added to EJB 3.1. Modern applications should use the schedule API
 which has many, if not all, the same features as Quartz. In fact, Quartz
 is the engine that drives the `@Schedule` and `ScheduleExpression`
diff --git a/examples/quartz-app/README_pt.adoc b/examples/quartz-app/README_pt.adoc
new file mode 100644
index 0000000..f7bd327
--- /dev/null
+++ b/examples/quartz-app/README_pt.adoc
@@ -0,0 +1,255 @@
+:index-group: Java EE Connectors
+:jbake-type: page
+:jbake-status: status=published
+= Uso do Adaptador de Recursos de Quartz
+
+NOTE: Este exemplo é um pouco datado. Ele antecede a API de agendamento que
+foi adicionado ao EJB 3.1. Aplicações modernas devem usar a API de agendamento, que possui muitos, se não todos, os mesmos recursos que o Quartz. De fato, o Quartz é o mecanismo que aciona o suporte `@Schedule` e `ScheduleExpression` no OpenEJB e TomEE.
+
+Apesar de datado de uma perspectiva de programação, ainda é uma
+excelente referência sobre como conectar e testar um Java EE Resource Adapter personalizado..
+
+== Estrutura do projeto
+
+Como os arquivos `.rar` não se saem bem em uma estrutura padrão do classpath, o
+objetivo é efetivamente `desembrulhar` o `.rar` para que suas dependências
+estejam no classpath e seu arquivo `ra.xml` ser encontrado e verificado pelo
+OpenEJB.
+
+Fazemos isso criando um módulo mini-maven para representar o `.rar` no
+termos maven. O `pom.xml` do `módulo rar` declara todos os
+jars que estariam dentro do `.rar` como dependências automatizadas. O arquivo `ra.xml`
+é adicionado ao projeto em `src/main/resources/META-INF/ra.xml`
+onde será visível para outros módulos.
+
+[source,java]
+----
+quartz-app
+quartz-app/pom.xml
+quartz-app/quartz-beans
+quartz-app/quartz-beans/pom.xml
+quartz-app/quartz-beans/src/main/java/org/superbiz/quartz/JobBean.java
+quartz-app/quartz-beans/src/main/java/org/superbiz/quartz/JobScheduler.java
+quartz-app/quartz-beans/src/main/java/org/superbiz/quartz/QuartzMdb.java
+quartz-app/quartz-beans/src/main/resources/META-INF
+quartz-app/quartz-beans/src/main/resources/META-INF/ejb-jar.xml
+quartz-app/quartz-beans/src/test/java/org/superbiz/quartz/QuartzMdbTest.java
+quartz-app/quartz-ra
+quartz-app/quartz-ra/pom.xml
+quartz-app/quartz-ra/src/main/resources/META-INF
+quartz-app/quartz-ra/src/main/resources/META-INF/ra.xml
+----
+
+=== ra.xml
+
+O conector em questão possui adaptadores de recursos de entrada e saída. 
+O adaptador de recursos de entrada pode ser usado para conduzir message driven beans (MDBs).
+O adaptador de recursos de saída, `QuartzResourceAdapter`, pode ser injetado em qualquer componente via`@Resource` e usado para originar e enviar mensagens ou eventos.
+
+[source,xml]
+----
+<connector 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/connector_1_5.xsd"
+           version="1.5">
+
+  <description>Quartz ResourceAdapter</description>
+  <display-name>Quartz ResourceAdapter</display-name>
+
+  <vendor-name>OpenEJB</vendor-name>
+  <eis-type>Quartz Adapter</eis-type>
+  <resourceadapter-version>1.0</resourceadapter-version>
+
+  <resourceadapter id="QuartzResourceAdapter">
+    <resourceadapter-class>org.apache.openejb.resource.quartz.QuartzResourceAdapter</resourceadapter-class>
+
+    <inbound-resourceadapter>
+      <messageadapter>
+        <messagelistener>
+          <messagelistener-type>org.quartz.Job</messagelistener-type>
+          <activationspec>
+            <activationspec-class>org.apache.openejb.resource.quartz.JobSpec</activationspec-class>
+          </activationspec>
+        </messagelistener>
+      </messageadapter>
+    </inbound-resourceadapter>
+
+  </resourceadapter>
+</connector>
+----
+
+== Usando o Adaptador de Recursos de Saída
+
+Aqui vemos o adaptador de recursos de saída usado em um bean de sessão stateless para agendar uma tarefa que será executada pelo MDB
+
+[source,java]
+----
+package org.superbiz.quartz;
+
+import org.apache.openejb.resource.quartz.QuartzResourceAdapter;
+import org.quartz.Job;
+import org.quartz.JobDetail;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.quartz.Scheduler;
+import org.quartz.SimpleTrigger;
+
+import javax.ejb.Stateless;
+import javax.naming.InitialContext;
+import java.util.Date;
+
+@Stateless
+public class JobBean implements JobScheduler {
+
+    @Override
+    public Date createJob() throws Exception {
+
+        final QuartzResourceAdapter ra = (QuartzResourceAdapter) new InitialContext().lookup("java:openejb/Resource/QuartzResourceAdapter");
+        final Scheduler s = ra.getScheduler();
+
+        //Add a job type
+        final JobDetail jd = new JobDetail("job1", "group1", JobBean.MyTestJob.class);
+        jd.getJobDataMap().put("MyJobKey", "MyJobValue");
+
+        //Schedule my 'test' job to run now
+        final SimpleTrigger trigger = new SimpleTrigger("trigger1", "group1", new Date());
+        return s.scheduleJob(jd, trigger);
+    }
+
+    public static class MyTestJob implements Job {
+
+        @Override
+        public void execute(JobExecutionContext context) throws JobExecutionException {
+            System.out.println("This is a simple test job to get: " + context.getJobDetail().getJobDataMap().get("MyJobKey"));
+        }
+    }
+}
+----
+
+== Recebendo dados do adaptador de recursos de entrada
+
+[source,java]
+----
+package org.superbiz.quartz;
+
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+
+import javax.ejb.ActivationConfigProperty;
+import javax.ejb.MessageDriven;
+
+@MessageDriven(activationConfig = {
+        @ActivationConfigProperty(propertyName = "cronExpression", propertyValue = "* * * * * ?")})
+public class QuartzMdb implements Job {
+
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        System.out.println("Executing Job");
+    }
+}
+----
+
+== Caso de teste
+
+[source,java]
+----
+package org.superbiz.quartz;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.Date;
+import java.util.Properties;
+
+public class QuartzMdbTest {
+
+    private static InitialContext initialContext = null;
+
+    @BeforeClass
+    public static void beforeClass() throws Exception {
+
+        if (null == initialContext) {
+            Properties properties = new Properties();
+            properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+
+            initialContext = new InitialContext(properties);
+        }
+    }
+
+    @AfterClass
+    public static void afterClass() throws Exception {
+        if (null != initialContext) {
+            initialContext.close();
+            initialContext = null;
+        }
+    }
+
+    @Test
+    public void testLookup() throws Exception {
+
+        final JobScheduler jbi = (JobScheduler) initialContext.lookup("JobBeanLocal");
+        final Date d = jbi.createJob();
+        Thread.sleep(500);
+        System.out.println("Scheduled test job should have run at: " + d.toString());
+    }
+
+    @Test
+    public void testMdb() throws Exception {
+        // Sleep 3 seconds and give quartz a chance to execute our MDB
+        Thread.sleep(3000);
+    }
+}
+----
+
+== Executando
+
+[source,console]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.quartz.QuartzMdbTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/quartz-app/quartz-beans
+INFO - openejb.base = /Users/dblevins/examples/quartz-app/quartz-beans
+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 - Found ConnectorModule in classpath: /Users/dblevins/examples/quartz-app/quartz-ra/target/quartz-ra-1.0.jar
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/quartz-app/quartz-beans/target/classes
+INFO - Beginning load: /Users/dblevins/examples/quartz-app/quartz-ra/target/quartz-ra-1.0.jar
+INFO - Extracting jar: /Users/dblevins/examples/quartz-app/quartz-ra/target/quartz-ra-1.0.jar
+INFO - Extracted path: /Users/dblevins/examples/quartz-app/quartz-ra/target/quartz-ra-1.0
+INFO - Beginning load: /Users/dblevins/examples/quartz-app/quartz-beans/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/quartz-app/quartz-beans/classpath.ear
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean JobBean: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Configuring Service(id=QuartzResourceAdapter, type=Resource, provider-id=QuartzResourceAdapter)
+INFO - Configuring Service(id=quartz-ra-1.0, type=Container, provider-id=Default MDB Container)
+INFO - Enterprise application "/Users/dblevins/examples/quartz-app/quartz-beans/classpath.ear" loaded.
+INFO - Assembling app: /Users/dblevins/examples/quartz-app/quartz-beans/classpath.ear
+INFO - Jndi(name=JobBeanLocal) --> Ejb(deployment-id=JobBean)
+INFO - Jndi(name=global/classpath.ear/quartz-beans/JobBean!org.superbiz.quartz.JobScheduler) --> Ejb(deployment-id=JobBean)
+INFO - Jndi(name=global/classpath.ear/quartz-beans/JobBean) --> Ejb(deployment-id=JobBean)
+INFO - Created Ejb(deployment-id=JobBean, ejb-name=JobBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=QuartzMdb, ejb-name=QuartzMdb, container=quartz-ra-1.0)
+Executing Job
+INFO - Started Ejb(deployment-id=JobBean, ejb-name=JobBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=QuartzMdb, ejb-name=QuartzMdb, container=quartz-ra-1.0)
+INFO - Deployed Application(path=/Users/dblevins/examples/quartz-app/quartz-beans/classpath.ear)
+This is a simple test job to get: MyJobValue
+Scheduled test job should have run at: Fri Oct 28 17:05:12 PDT 2011
+Executing Job
+Executing Job
+Executing Job
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.971 sec
+
+Results :
+
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
+----
diff --git a/examples/realm-in-tomee/README_pt.adoc b/examples/realm-in-tomee/README_pt.adoc
new file mode 100644
index 0000000..b35c047
--- /dev/null
+++ b/examples/realm-in-tomee/README_pt.adoc
@@ -0,0 +1,42 @@
+:index-group: Unrevised
+:jbake-type: page
+:jbake-status: status=published
+= DataSourceRealm e TomEE DataSource
+
+== Inicio Rápido
+
+Para testá-lo:
+
+[source,java]
+----
+mvn clean package tomee:run
+----
+
+== Como funciona?
+
+Um DataSource é definida em tomee.xml:
+
+[source,xml]
+----
+<Resource id="myDataSource" type="DataSource" /> <!-- standard properties -->
+----
+
+Em seguida, esse DataSource é referenciada em server.xml:
+
+[source,xml]
+----
+<Realm
+    className="org.apache.catalina.realm.DataSourceRealm"
+    dataSourceName="myDataSource"
+    userTable="users"
+    userNameCol="user_name"
+    userCredCol="user_pass"
+    userRoleTable="user_roles"
+    roleNameCol="role_name"/>
+----
+
+Para inicializar o datasource (para o teste), usamos o hook TomEE, que fornece um arquivo `import-.sql`. O arquivo deve estar no classpath do datasource, então o adicionamos à lib (por padrão, no classloader). isto simplesmente contém as criações da tabela e a inserção do `admin` `tomee` com a senha `tomee`.
+
+== Teste-o
+
+Acesse http://localhost:8080/realm-in-tomee-1.1.0-SNAPSHOT/ e conecte-se usando o login/password tomee/tomee. Você deve ver a `Home`.
diff --git a/examples/resources-jmx-example/README.adoc b/examples/resources-jmx-example/README.adoc
index 94f729c..e5c12b1 100644
--- a/examples/resources-jmx-example/README.adoc
+++ b/examples/resources-jmx-example/README.adoc
@@ -1,4 +1,4 @@
-:index-group: Unrevised
+:index-group: JMX
 :jbake-type: page
 :jbake-status: status=published
 = Custom resources in an EAR archive
@@ -151,7 +151,7 @@
 }
 ----
 
-Note that this class uses the properties defined in the configuration
+NOTE: that this class uses the properties defined in the configuration
 (below), combined with reflection, to instantiate the resource, and set
 its attributes. The code above requires two properties `code` and `name`
 in order to know what class to create, and the JMX name to register it
@@ -172,7 +172,7 @@
 </Resources>
 ----
 
-Note that the class-name attribute refers to the factory class, and not
+NOTE: that the class-name attribute refers to the factory class, and not
 the resource. Once the resource has been created and bound in TomEE’s
 JNDI tree the factory is no longer used.
 
@@ -786,7 +786,7 @@
 Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
 ----
 
-Note the following lines showing the creation of the resource.
+NOTE: the following lines showing the creation of the resource.
 
 [source,java]
 ----
diff --git a/examples/resources-jmx-example/README_pt.adoc b/examples/resources-jmx-example/README_pt.adoc
new file mode 100644
index 0000000..0ba3925
--- /dev/null
+++ b/examples/resources-jmx-example/README_pt.adoc
@@ -0,0 +1,767 @@
+:index-group: JMX
+:jbake-type: page
+:jbake-status: status=published
+= Custom resources in an EAR archive
+
+O TomEE permite que você defina seus próprios recursos na sua aplicação e declare-os em `META-INF/resources.xml`. Isso permite que você injete esses recursos em qualquer componente gerenciado na sua aplicação.
+
+Além disso, você também pode definir um método `create` no próprio recurso ou em um POJO que atua como uma fábrica.
+Este exemplo demonstra o uso do método `create` para registrar adicionalmente o recurso como um JMX MBean, além de disponibilizá-lo para injeção.
+
+== Resource
+
+Recursos customizados podem ser definidos usando classes Java muito simples. Nesse caso específico, como o aplicativo também deseja registrar esse como MBean, a classe de recurso precisa seguir a especificação de MBean.
+
+[source,java]
+----
+public class Hello implements HelloMBean {
+
+    private AtomicInteger count = new AtomicInteger(0);
+
+    @Override
+    public String greet(String name) {
+        if (name == null) {
+            throw new NullPointerException("Name cannot be null");
+        }
+
+        return "Hello, " + name;
+    }
+
+    @Override
+    public int getCount() {
+        return count.get();
+    }
+
+    @Override
+    public void setCount(int value) {
+        count.set(value);
+    }
+
+    @Override
+    public void increment() {
+        count.incrementAndGet();
+    }
+}
+
+public interface HelloMBean {
+
+    public String greet(final String name);
+
+    public int getCount();
+
+    public void setCount(int count);
+
+    public void increment();
+
+}
+----
+
+== Método Criar(Create)
+
+Para evitar adicionar a lógica para registrar o recurso como um MBean em todos os recursos, a aplicação fornece a uma única classe um método `create()` que cuida dessa lógica para nós.
+
+[source,java]
+----
+public class JMXBeanCreator {
+
+    private static Logger LOGGER = Logger.getLogger(JMXBeanCreator.class.getName());
+    private Properties properties;
+
+    public Object create() throws MBeanRegistrationException {
+        // instantiate the bean
+
+        final String code = properties.getProperty("code");
+        final String name = properties.getProperty("name");
+
+        requireNotNull(code);
+        requireNotNull(name);
+
+        try {
+            final Class<?> cls = Class.forName(code, true, Thread.currentThread().getContextClassLoader());
+            final Object instance = cls.newInstance();
+
+            final Field[] fields = cls.getDeclaredFields();
+            for (final Field field : fields) {
+
+                final String property = properties.getProperty(field.getName());
+                if (property == null) {
+                    continue;
+                }
+
+                try {
+                    field.setAccessible(true);
+                    field.set(instance, Converter.convert(property, field.getType(), field.getName()));
+                } catch (Exception e) {
+                    LOGGER.info(String.format("Unable to set value %s on field %s", property, field.getName()));
+                }
+            }
+
+            final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+            final ObjectName objectName = new ObjectName(name);
+            mbs.registerMBean(instance, objectName);
+
+            return instance;
+
+        } catch (final ClassNotFoundException e) {
+            LOGGER.severe("Unable to find class " + code);
+            throw new MBeanRegistrationException(e);
+        } catch (final InstantiationException e) {
+            LOGGER.severe("Unable to create instance of class " + code);
+            throw new MBeanRegistrationException(e);
+        } catch (final IllegalAccessException e) {
+            LOGGER.severe("Illegal access: " + code);
+            throw new MBeanRegistrationException(e);
+        } catch (final MalformedObjectNameException e) {
+            LOGGER.severe("Malformed MBean name: " + name);
+            throw new MBeanRegistrationException(e);
+        } catch (final InstanceAlreadyExistsException e) {
+            LOGGER.severe("Instance already exists: " + name);
+            throw new MBeanRegistrationException(e);
+        } catch (final NotCompliantMBeanException e) {
+            LOGGER.severe("Class is not a valid MBean: " + code);
+            throw new MBeanRegistrationException(e);
+        } catch (final javax.management.MBeanRegistrationException e) {
+            LOGGER.severe("Error registering " + name + ", " + code);
+            throw new MBeanRegistrationException(e);
+        }
+    }
+
+    private void requireNotNull(final String object) throws MBeanRegistrationException {
+        if (object == null) {
+            throw new MBeanRegistrationException("code property not specified, stopping");
+        }
+    }
+
+    public Properties getProperties() {
+        return properties;
+    }
+
+    public void setProperties(final Properties properties) {
+        this.properties = properties;
+    }
+}
+----
+
+NOTE: que esta classe usa as propriedades definidas na configuração
+(abaixo), combinada com reflexão, para instanciar o recurso e definir
+seus atributos. O código acima requer duas propriedades `code` e `name`
+para saber qual classe criar e o nome JMX sob o qual será registrada.
+
+== Resource
+
+O recurso pode ser definido em `META-INF/resources.xml` da seguinte maneira:
+
+[source,xml]
+----
+<Resources>
+  <Resource id="Hello" class-name="org.superbiz.resource.jmx.factory.JMXBeanCreator" factory-name="create">
+    code org.superbiz.resource.jmx.resources.Hello
+    name superbiz.test:name=Hello
+    count 12345
+  </Resource>
+</Resources>
+----
+
+NOTE: que o atributo class-name se refere à classe factory, e não
+o recurso. Depois que o recurso for criado e vinculado ao recurso. 
+Depois que o recurso for criado e vinculado à árvore JNDI do TomEE, a fábrica não é mais usada.
+
+== Usando o @Resource para injeção
+
+O caso de teste para este exemplo demonstra a injeção em um EJB como uma maneira de acessar o recurso e também acessar o recurso via JMX.
+
+[source,java]
+----
+@RunWith(Arquillian.class)
+public class JMXTest {
+
+    @EJB
+    private TestEjb ejb;
+
+    @Deployment
+    public static EnterpriseArchive createDeployment() {
+
+        final JavaArchive ejbJar = new Mvn.Builder()
+                .name("jmx-ejb.jar")
+                .build(JavaArchive.class)
+                .addClass(JMXTest.class)
+                .addClass(TestEjb.class);
+
+        final EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, "jmx.ear")
+                .addAsModule(ejbJar);
+
+        return ear;
+    }
+
+    @Test
+    public void test() throws Exception {
+        final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+        final ObjectName objectName = new ObjectName("superbiz.test:name=Hello");
+
+        Assert.assertNotNull(ejb);
+    
+        Assert.assertEquals(0, mbs.getAttribute(objectName, "Count"));
+        Assert.assertEquals(0, ejb.getCount());
+    
+        mbs.invoke(objectName, "increment", new Object[0], new String[0]);
+        Assert.assertEquals(1, mbs.getAttribute(objectName, "Count"));
+        Assert.assertEquals(1, ejb.getCount());
+    
+        ejb.increment();
+        Assert.assertEquals(2, mbs.getAttribute(objectName, "Count"));
+        Assert.assertEquals(2, ejb.getCount());
+
+        Attribute attribute = new Attribute("Count", 12345);
+        mbs.setAttribute(objectName, attribute);
+        Assert.assertEquals(12345, mbs.getAttribute(objectName, "Count"));
+        Assert.assertEquals(12345, ejb.getCount());
+    
+        ejb.setCount(23456);
+        Assert.assertEquals(23456, mbs.getAttribute(objectName, "Count"));
+        Assert.assertEquals(23456, ejb.getCount());
+
+        Assert.assertEquals("Hello, world", mbs.invoke(objectName, "greet", new Object[] { "world" }, new String[] { String.class.getName() }));
+        Assert.assertEquals("Hello, world", ejb.greet("world"));
+    }
+
+    @Singleton
+    @Lock(LockType.READ)
+    public static class TestEjb {
+
+        @Resource(name="jmx/Hello")
+        private HelloMBean helloMBean;
+
+        public String greet(String name) {
+            return helloMBean.greet(name);
+        }
+
+        public void setCount(int count) {
+            helloMBean.setCount(count);
+        }
+
+        public void increment() {
+            helloMBean.increment();
+        }
+
+        public int getCount() {
+            return helloMBean.getCount();
+        }
+    }
+}
+----
+
+O atributo name `<name>/<resource-id>`é usado na anotação `@Resource` para executar a injeção. Nenhuma configuração adicional é necessária para injetar o recurso.
+
+== Propriedades adicionais
+
+Além das propriedades `code` e `name` que o código acima usa para instanciar o recurso, o próprio TomEE fornece algumas propriedades para fornecer mais controle sobre a criação de recursos.
+
+Os recursos são normalmente descobertos, criados e vinculados ao
+JNDI muito cedo no processo de implementação, pois outros componentes dependem deles. Isso pode levar a problemas nos quais o classpath final da aplicação ainda não foi determinado e, portanto, o TomEE não pode carregar seu recurso personalizado.
+
+As seguintes propriedades podem ser usadas para alterar esse comportamento.
+
+* Lazy
+
+é um valor booleano que, quando verdadeiro, cria um proxy que adia
+a instanciação real do recurso até a primeira vez que ele é procurado pelo JNDI. 
+Isso pode ser útil se o recurso exigir o classpath da aplicação ou para melhorar o tempo de inicialização não totalmente inicializando recursos que podem não ser usados.
+
+* UseAppClassLoader
+
+Esse valor booleano força um recurso instanciado Lazy a usar o
+classloaders da aplicação, em vez do classloader disponível quando
+os recursos foram processados primeiro.
+
+* InitializeAfterDeployment
+
+Essa configuração booleana força um recurso criado com a propriedade Lazy a ser instanciado depois que a aplicação é iniciada, em vez de esperar que ele seja procurado. Use esse sinalizador se precisar que o recurso seja carregado,independentemente de ser injetado em um componente gerenciado ou consultado manualmente.
+
+Por padrão, todas essas configurações são `false`, a menos que o TomEE encontre um recurso da aplicação personalizado que não possa ser instanciado até que a aplicação seja iniciada. 
+Nesse caso, ele definirá esses três sinalizadores para `true`, a menos que o sinalizador `Lazy` tenha sido definido explicitamente.
+
+== PostConstruct / PreDestroy
+
+Como alternativa ao uso de um método de fábrica, você pode usar `@PostConstruct`
+e `@PreDestroy` dentro da sua classe de recurso (observe que você não pode
+usar isso dentro de uma classe de fábrica) para gerenciar qualquer criação ou
+atividades de limpeza. O TomEE chama automaticamente esses métodos quando o
+aplicativo é iniciado e destruído. O uso do `@PostConstruct`
+efetivamente força um recurso carregado lentamente a ser instanciado quando o
+aplicativo está sendo iniciado - da mesma maneira que a propriedade `InitializeAfterDeployment` faz.
+
+[source,java]
+----
+public class Alternative implements AlternativeMBean {
+
+    private static Logger LOGGER = Logger.getLogger(Alternative.class.getName());
+    private Properties properties;
+
+    @PostConstruct
+    public void postConstruct() throws MBeanRegistrationException {
+        // initialize the bean
+
+        final String code = properties.getProperty("code");
+        final String name = properties.getProperty("name");
+
+        requireNotNull(code);
+        requireNotNull(name);
+
+        try {
+            final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+            final ObjectName objectName = new ObjectName(name);
+            mbs.registerMBean(this, objectName);
+        } catch (final MalformedObjectNameException e) {
+            LOGGER.severe("Malformed MBean name: " + name);
+            throw new MBeanRegistrationException(e);
+        } catch (final InstanceAlreadyExistsException e) {
+            LOGGER.severe("Instance already exists: " + name);
+            throw new MBeanRegistrationException(e);
+        } catch (final NotCompliantMBeanException e) {
+            LOGGER.severe("Class is not a valid MBean: " + code);
+            throw new MBeanRegistrationException(e);
+        } catch (final javax.management.MBeanRegistrationException e) {
+            LOGGER.severe("Error registering " + name + ", " + code);
+            throw new MBeanRegistrationException(e);
+        }
+    }
+
+    @PreDestroy
+    public void preDestroy() throws MBeanRegistrationException {
+        final String name = properties.getProperty("name");
+        requireNotNull(name);
+
+        try {
+            final MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+            final ObjectName objectName = new ObjectName(name);
+            mbs.unregisterMBean(objectName);
+        } catch (final MalformedObjectNameException e) {
+            LOGGER.severe("Malformed MBean name: " + name);
+            throw new MBeanRegistrationException(e);
+        } catch (final javax.management.MBeanRegistrationException e) {
+            LOGGER.severe("Error unregistering " + name);
+            throw new MBeanRegistrationException(e);
+        } catch (InstanceNotFoundException e) {
+            LOGGER.severe("Error unregistering " + name);
+            throw new MBeanRegistrationException(e);
+        }
+    }
+
+    private void requireNotNull(final String object) throws MBeanRegistrationException {
+        if (object == null) {
+            throw new MBeanRegistrationException("code property not specified, stopping");
+        }
+    }
+
+    public Properties getProperties() {
+        return properties;
+    }
+
+    public void setProperties(final Properties properties) {
+        this.properties = properties;
+    }
+
+    private int count = 0;
+
+    @Override
+    public String greet(String name) {
+        if (name == null) {
+            throw new NullPointerException("Name cannot be null");
+        }
+
+        return "Hello, " + name;
+    }
+
+    @Override
+    public int getCount() {
+        return count;
+    }
+
+    @Override
+    public void setCount(int value) {
+        count = value;
+    }
+
+    @Override
+    public void increment() {
+        count++;
+    }
+}
+----
+
+== Executando
+
+A execução do exemplo pode ser feita no maven com um simples comando `mvn clean install`, executado no diretório `resources-jmx-example`.
+
+Ao executar, você verá uma saída semelhante à seguinte.
+
+[source,console]
+----
+-------------------------------------------------------
+ T E S T E S
+-------------------------------------------------------
+Running org.superbiz.resource.jmx.JMXTest
+Apr 15, 2015 12:40:09 PM org.jboss.arquillian.container.impl.MapObject populate
+WARNING: Configuration contain properties not supported by the backing object org.apache.tomee.arquillian.remote.RemoteTomEEConfiguration
+Unused property entries: {openejbVersion=${tomee.version}, tomcatVersion=}
+Supported property names: [additionalLibs, httpPort, httpsPort, stopCommand, portRange, conf, debug, exportConfAsSystemProperty, type, unpackWars, version, serverXml, preloadClasses, dir, deployerProperties, stopPort, singleDumpByArchiveName, appWorkingDir, host, cleanOnStartUp, quickSession, ajpPort, artifactId, properties, singleDeploymentByArchiveName, groupId, stopHost, lib, catalina_opts, debugPort, webContextToUseWithEars, simpleLog, removeUnusedWebapps, keepServerXmlAsThis, classifier, bin]
+Apr 15, 2015 12:40:09 PM org.apache.openejb.arquillian.common.Setup findHome
+INFO: Unable to find home in: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote
+Apr 15, 2015 12:40:09 PM org.apache.openejb.arquillian.common.MavenCache getArtifact
+INFO: Downloading org.apache.openejb:apache-tomee:7.0.0-SNAPSHOT:zip:plus please wait...
+Apr 15, 2015 12:40:10 PM org.apache.openejb.arquillian.common.Zips unzip
+INFO: Extracting '/Users/jgallimore/.m2/repository/org/apache/openejb/apache-tomee/7.0.0-SNAPSHOT/apache-tomee-7.0.0-SNAPSHOT-plus.zip' to '/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote'
+Apr 15, 2015 12:40:12 PM org.apache.tomee.arquillian.remote.RemoteTomEEContainer configure
+INFO: Downloaded container to: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT
+Started server process on port: 61309
+objc[20102]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/jre/bin/java and /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Server version:        Apache Tomcat (TomEE)/7.0.61 (7.0.0-SNAPSHOT)
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Server built:          Mar 27 2015 12:03:56 UTC
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Server number:         7.0.61.0
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: OS Name:               Mac OS X
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: OS Version:            10.9.5
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Architecture:          x86_64
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Java Home:             /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/jre
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: JVM Version:           1.7.0_71-b14
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: JVM Vendor:            Oracle Corporation
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: CATALINA_BASE:         /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: CATALINA_HOME:         /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Command line argument: -XX:+HeapDumpOnOutOfMemoryError
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Command line argument: -XX:PermSize=64m
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Command line argument: -XX:MaxPermSize=256m
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Command line argument: -Xmx512m
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Command line argument: -Xms256m
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Command line argument: -XX:ReservedCodeCacheSize=64m
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Command line argument: -Dtomee.httpPort=61309
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Command line argument: -Dorg.apache.catalina.STRICT_SERVLET_COMPLIANCE=false
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Command line argument: -Dorg.apache.openejb.servlet.filters=org.apache.openejb.arquillian.common.ArquillianFilterRunner=/ArquillianServletRunner
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Command line argument: -Djava.util.logging.config.file=/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT/conf/logging.properties
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Command line argument: -javaagent:/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT/lib/openejb-javaagent.jar
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Command line argument: -Djava.io.tmpdir=/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT/temp
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Command line argument: -Djava.endorsed.dirs=/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT/endorsed
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Command line argument: -Dcatalina.base=/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Command line argument: -Dcatalina.home=/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Command line argument: -Dcatalina.ext.dirs=/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT/lib
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Command line argument: -Dorg.apache.tomcat.util.http.ServerCookie.ALLOW_HTTP_SEPARATORS_IN_V0=true
+Apr 15, 2015 12:40:14 PM org.apache.catalina.startup.VersionLoggerListener log
+INFO: Command line argument: -ea
+Apr 15, 2015 12:40:14 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
+INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /Users/jgallimore/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
+Apr 15, 2015 12:40:14 PM org.apache.coyote.AbstractProtocol init
+INFO: Initializing ProtocolHandler ["http-bio-61309"]
+Apr 15, 2015 12:40:14 PM org.apache.coyote.AbstractProtocol init
+INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
+Apr 15, 2015 12:40:16 PM org.apache.openejb.util.OptionsLog info
+INFO: Using 'openejb.jdbc.datasource-creator=org.apache.tomee.jdbc.TomEEDataSourceCreator'
+Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
+INFO: ********************************************************************************
+Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
+INFO: OpenEJB http://tomee.apache.org/
+Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
+INFO: Startup: Wed Apr 15 12:40:16 BST 2015
+Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
+INFO: Copyright 1999-2013 (C) Apache OpenEJB Project, All Rights Reserved.
+Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
+INFO: Version: 7.0.0-SNAPSHOT
+Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
+INFO: Build date: 20150415
+Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
+INFO: Build time: 11:37
+Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
+INFO: ********************************************************************************
+Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
+INFO: openejb.home = /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT
+Apr 15, 2015 12:40:16 PM org.apache.openejb.OpenEJB$Instance <init>
+INFO: openejb.base = /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT
+Apr 15, 2015 12:40:16 PM org.apache.openejb.cdi.CdiBuilder initializeOWB
+INFO: Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@4a00b74b
+Apr 15, 2015 12:40:16 PM org.apache.openejb.cdi.CdiBuilder initializeOWB
+INFO: Succeeded in installing singleton service
+Apr 15, 2015 12:40:17 PM org.apache.openejb.config.ConfigurationFactory init
+INFO: openejb configuration file is '/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT/conf/tomee.xml'
+Apr 15, 2015 12:40:17 PM org.apache.openejb.config.ConfigurationFactory configureService
+INFO: Configuring Service(id=Tomcat Security Service, type=SecurityService, provider-id=Tomcat Security Service)
+Apr 15, 2015 12:40:17 PM org.apache.openejb.config.ConfigurationFactory configureService
+INFO: Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+Apr 15, 2015 12:40:17 PM org.apache.openejb.util.OptionsLog info
+INFO: Using 'openejb.system.apps=true'
+Apr 15, 2015 12:40:17 PM org.apache.openejb.config.ConfigurationFactory configureApplication
+INFO: Configuring enterprise application: openejb
+Apr 15, 2015 12:40:17 PM org.apache.openejb.config.InitEjbDeployments deploy
+INFO: Using openejb.deploymentId.format '{ejbName}'
+Apr 15, 2015 12:40:17 PM org.apache.openejb.config.InitEjbDeployments deploy
+INFO: Auto-deploying ejb openejb/Deployer: EjbDeployment(deployment-id=openejb/Deployer)
+Apr 15, 2015 12:40:17 PM org.apache.openejb.config.InitEjbDeployments deploy
+INFO: Auto-deploying ejb openejb/ConfigurationInfo: EjbDeployment(deployment-id=openejb/ConfigurationInfo)
+Apr 15, 2015 12:40:18 PM org.apache.openejb.config.InitEjbDeployments deploy
+INFO: Auto-deploying ejb MEJB: EjbDeployment(deployment-id=MEJB)
+Apr 15, 2015 12:40:18 PM org.apache.openejb.config.ConfigurationFactory configureService
+INFO: Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+Apr 15, 2015 12:40:18 PM org.apache.openejb.config.AutoConfig createContainer
+INFO: Auto-creating a container for bean openejb/Deployer: Container(type=STATELESS, id=Default Stateless Container)
+Apr 15, 2015 12:40:18 PM org.apache.openejb.config.AppInfoBuilder build
+INFO: Enterprise application "openejb" loaded.
+Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.Assembler createRecipe
+INFO: Creating TransactionManager(id=Default Transaction Manager)
+Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.Assembler createRecipe
+INFO: Creating SecurityService(id=Tomcat Security Service)
+Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.Assembler createRecipe
+INFO: Creating Container(id=Default Stateless Container)
+Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.Assembler createAppClassLoader
+INFO: Not creating another application classloader for openejb
+Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.Assembler createApplication
+INFO: Assembling app: openejb
+Apr 15, 2015 12:40:18 PM org.apache.openejb.util.OptionsLog info
+INFO: Using 'openejb.jndiname.format={deploymentId}{interfaceType.openejbLegacyName}'
+Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+INFO: Jndi(name=openejb/DeployerBusinessRemote) --> Ejb(deployment-id=openejb/Deployer)
+Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+INFO: Jndi(name=global/openejb/openejb/Deployer!org.apache.openejb.assembler.Deployer) --> Ejb(deployment-id=openejb/Deployer)
+Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+INFO: Jndi(name=global/openejb/openejb/Deployer) --> Ejb(deployment-id=openejb/Deployer)
+Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+INFO: Jndi(name=openejb/ConfigurationInfoBusinessRemote) --> Ejb(deployment-id=openejb/ConfigurationInfo)
+Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+INFO: Jndi(name=global/openejb/openejb/ConfigurationInfo!org.apache.openejb.assembler.classic.cmd.ConfigurationInfo) --> Ejb(deployment-id=openejb/ConfigurationInfo)
+Apr 15, 2015 12:40:18 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+INFO: Jndi(name=global/openejb/openejb/ConfigurationInfo) --> Ejb(deployment-id=openejb/ConfigurationInfo)
+Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+INFO: Jndi(name=MEJB) --> Ejb(deployment-id=MEJB)
+Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+INFO: Jndi(name=global/openejb/MEJB!javax.management.j2ee.ManagementHome) --> Ejb(deployment-id=MEJB)
+Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+INFO: Jndi(name=global/openejb/MEJB) --> Ejb(deployment-id=MEJB)
+Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler startEjbs
+INFO: Created Ejb(deployment-id=openejb/Deployer, ejb-name=openejb/Deployer, container=Default Stateless Container)
+Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler startEjbs
+INFO: Created Ejb(deployment-id=MEJB, ejb-name=MEJB, container=Default Stateless Container)
+Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler startEjbs
+INFO: Created Ejb(deployment-id=openejb/ConfigurationInfo, ejb-name=openejb/ConfigurationInfo, container=Default Stateless Container)
+Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler startEjbs
+INFO: Started Ejb(deployment-id=openejb/Deployer, ejb-name=openejb/Deployer, container=Default Stateless Container)
+Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler startEjbs
+INFO: Started Ejb(deployment-id=MEJB, ejb-name=MEJB, container=Default Stateless Container)
+Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler startEjbs
+INFO: Started Ejb(deployment-id=openejb/ConfigurationInfo, ejb-name=openejb/ConfigurationInfo, container=Default Stateless Container)
+Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler deployMBean
+INFO: Deployed MBean(openejb.user.mbeans:application=openejb,group=org.apache.openejb.assembler.monitoring,name=JMXDeployer)
+Apr 15, 2015 12:40:19 PM org.apache.openejb.assembler.classic.Assembler createApplication
+INFO: Deployed Application(path=openejb)
+Apr 15, 2015 12:40:20 PM org.apache.openejb.server.ServiceManager initServer
+INFO: Creating ServerService(id=cxf)
+Apr 15, 2015 12:40:20 PM org.apache.openejb.server.ServiceManager initServer
+INFO: Creating ServerService(id=cxf-rs)
+Apr 15, 2015 12:40:20 PM org.apache.openejb.server.SimpleServiceManager start
+INFO:   ** Bound Services **
+Apr 15, 2015 12:40:20 PM org.apache.openejb.server.SimpleServiceManager printRow
+INFO:   NAME                 IP              PORT  
+Apr 15, 2015 12:40:20 PM org.apache.openejb.server.SimpleServiceManager start
+INFO: -------
+Apr 15, 2015 12:40:20 PM org.apache.openejb.server.SimpleServiceManager start
+INFO: Ready!
+Apr 15, 2015 12:40:20 PM org.apache.catalina.startup.Catalina load
+INFO: Initialization processed in 7621 ms
+Apr 15, 2015 12:40:20 PM org.apache.tomee.catalina.OpenEJBNamingContextListener bindResource
+INFO: Importing a Tomcat Resource with id 'UserDatabase' of type 'org.apache.catalina.UserDatabase'.
+Apr 15, 2015 12:40:20 PM org.apache.openejb.assembler.classic.Assembler createRecipe
+INFO: Creating Resource(id=UserDatabase)
+Apr 15, 2015 12:40:20 PM org.apache.catalina.core.StandardService startInternal
+INFO: Starting service Catalina
+Apr 15, 2015 12:40:20 PM org.apache.catalina.core.StandardEngine startInternal
+INFO: Starting Servlet Engine: Apache Tomcat (TomEE)/7.0.61 (7.0.0-SNAPSHOT)
+Apr 15, 2015 12:40:21 PM org.apache.coyote.AbstractProtocol start
+INFO: Starting ProtocolHandler ["http-bio-61309"]
+Apr 15, 2015 12:40:21 PM org.apache.coyote.AbstractProtocol start
+INFO: Starting ProtocolHandler ["ajp-bio-8009"]
+Apr 15, 2015 12:40:21 PM org.apache.catalina.startup.Catalina start
+INFO: Server startup in 247 ms
+Apr 15, 2015 12:40:21 PM org.apache.openejb.client.EventLogger log
+INFO: RemoteInitialContextCreated{providerUri=http://localhost:61309/tomee/ejb}
+Apr 15, 2015 12:40:21 PM org.apache.openejb.util.JarExtractor extract
+INFO: Extracting jar: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx.ear
+Apr 15, 2015 12:40:21 PM org.apache.openejb.util.JarExtractor extract
+INFO: Extracted path: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx
+Apr 15, 2015 12:40:21 PM org.apache.openejb.util.JarExtractor extract
+INFO: Extracting jar: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx/arquillian-protocol.war
+Apr 15, 2015 12:40:21 PM org.apache.openejb.util.JarExtractor extract
+INFO: Extracted path: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx/arquillian-protocol
+Apr 15, 2015 12:40:21 PM org.apache.openejb.util.OptionsLog info
+INFO: Using 'openejb.deployments.classpath.filter.systemapps=false'
+Apr 15, 2015 12:40:23 PM org.apache.openejb.util.OptionsLog info
+INFO: Using 'openejb.default.deployment-module=org.apache.openejb.config.WebModule'
+Apr 15, 2015 12:40:23 PM org.apache.openejb.util.OptionsLog info
+INFO: Using 'openejb.default.deployment-module=org.apache.openejb.config.WebModule'
+Apr 15, 2015 12:40:23 PM org.apache.openejb.config.DeploymentsResolver processUrls
+INFO: Found EjbModule in classpath: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx/jmx-ejb.jar
+Apr 15, 2015 12:40:23 PM org.apache.openejb.util.OptionsLog info
+INFO: Using 'openejb.default.deployment-module=org.apache.openejb.config.WebModule'
+Apr 15, 2015 12:40:23 PM org.apache.openejb.util.OptionsLog info
+INFO: Using 'openejb.default.deployment-module=org.apache.openejb.config.WebModule'
+Apr 15, 2015 12:40:23 PM org.apache.openejb.util.OptionsLog info
+INFO: Using 'openejb.default.deployment-module=org.apache.openejb.config.WebModule'
+Apr 15, 2015 12:40:23 PM org.apache.openejb.config.DeploymentsResolver loadFromClasspath
+INFO: Searched 6 classpath urls in 1605 milliseconds.  Average 267 milliseconds per url.
+Apr 15, 2015 12:40:23 PM org.apache.openejb.config.ConfigurationFactory configureApplication
+INFO: Configuring enterprise application: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx
+Apr 15, 2015 12:40:24 PM org.apache.openejb.config.InitEjbDeployments deploy
+INFO: Auto-deploying ejb TestEjb: EjbDeployment(deployment-id=TestEjb)
+Apr 15, 2015 12:40:24 PM org.apache.openejb.config.ConfigurationFactory configureService
+INFO: Configuring Service(id=jmx/Hello, type=Resource, provider-id=jmx/Hello)
+Apr 15, 2015 12:40:24 PM org.apache.openejb.config.ConfigurationFactory configureService
+INFO: Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig createContainer
+INFO: Auto-creating a container for bean jmx-ejb.Comp1256115069: Container(type=MANAGED, id=Default Managed Container)
+Apr 15, 2015 12:40:24 PM org.apache.openejb.assembler.classic.Assembler createRecipe
+INFO: Creating Container(id=Default Managed Container)
+Apr 15, 2015 12:40:24 PM org.apache.openejb.core.managed.SimplePassivater init
+INFO: Using directory /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/apache-tomee-remote/apache-tomee-plus-7.0.0-SNAPSHOT/temp for stateful session passivation
+Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
+INFO: Auto-linking resource-ref 'java:comp/env/jmx/Hello' in bean jmx-ejb.Comp1256115069 to Resource(id=jmx/Hello)
+Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
+INFO: Auto-linking resource-ref 'openejb/Resource/jmx/Hello' in bean jmx-ejb.Comp1256115069 to Resource(id=Hello)
+Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
+INFO: Auto-linking resource-ref 'openejb/Resource/Hello' in bean jmx-ejb.Comp1256115069 to Resource(id=Hello)
+Apr 15, 2015 12:40:24 PM org.apache.openejb.config.ConfigurationFactory configureService
+INFO: Configuring Service(id=Default Singleton Container, type=Container, provider-id=Default Singleton Container)
+Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig createContainer
+INFO: Auto-creating a container for bean TestEjb: Container(type=SINGLETON, id=Default Singleton Container)
+Apr 15, 2015 12:40:24 PM org.apache.openejb.assembler.classic.Assembler createRecipe
+INFO: Creating Container(id=Default Singleton Container)
+Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
+INFO: Auto-linking resource-ref 'java:comp/env/jmx/Hello' in bean TestEjb to Resource(id=jmx/Hello)
+Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
+INFO: Auto-linking resource-ref 'openejb/Resource/jmx/Hello' in bean TestEjb to Resource(id=Hello)
+Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
+INFO: Auto-linking resource-ref 'openejb/Resource/Hello' in bean TestEjb to Resource(id=Hello)
+Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
+INFO: Auto-linking resource-ref 'openejb/Resource/jmx/Hello' in bean jmx_org.superbiz.resource.jmx.JMXTest to Resource(id=Hello)
+Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AutoConfig processResourceRef
+INFO: Auto-linking resource-ref 'openejb/Resource/Hello' in bean jmx_org.superbiz.resource.jmx.JMXTest to Resource(id=Hello)
+Apr 15, 2015 12:40:24 PM org.apache.openejb.config.AppInfoBuilder build
+INFO: Enterprise application "/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx" loaded.
+Apr 15, 2015 12:40:24 PM org.apache.openejb.assembler.classic.Assembler createAppClassLoader
+INFO: Creating dedicated application classloader for jmx
+Apr 15, 2015 12:40:24 PM org.apache.openejb.assembler.classic.Assembler createApplication
+INFO: Assembling app: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx
+Apr 15, 2015 12:40:24 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+INFO: Jndi(name=TestEjbLocalBean) --> Ejb(deployment-id=TestEjb)
+Apr 15, 2015 12:40:24 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+INFO: Jndi(name=global/jmx/jmx-ejb/TestEjb!org.superbiz.resource.jmx.JMXTest$TestEjb) --> Ejb(deployment-id=TestEjb)
+Apr 15, 2015 12:40:24 PM org.apache.openejb.assembler.classic.JndiBuilder bind
+INFO: Jndi(name=global/jmx/jmx-ejb/TestEjb) --> Ejb(deployment-id=TestEjb)
+Apr 15, 2015 12:40:24 PM org.apache.openejb.cdi.CdiBuilder initSingleton
+INFO: Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@4a00b74b
+Apr 15, 2015 12:40:24 PM org.apache.openejb.cdi.OpenEJBLifecycle startApplication
+INFO: OpenWebBeans Container is starting...
+Apr 15, 2015 12:40:24 PM org.apache.webbeans.plugins.PluginLoader startUp
+INFO: Adding OpenWebBeansPlugin : [CdiPlugin]
+Apr 15, 2015 12:40:24 PM org.apache.webbeans.plugins.PluginLoader startUp
+Apr 15, 2015 12:40:25 PM org.apache.webbeans.config.BeansDeployer validateInjectionPoints
+INFO: All injection points were validated successfully.
+Apr 15, 2015 12:40:25 PM org.apache.openejb.cdi.OpenEJBLifecycle startApplication
+INFO: OpenWebBeans Container has started, it took 186 ms.
+Apr 15, 2015 12:40:25 PM org.apache.openejb.assembler.classic.Assembler startEjbs
+INFO: Created Ejb(deployment-id=TestEjb, ejb-name=TestEjb, container=Default Singleton Container)
+Apr 15, 2015 12:40:25 PM org.apache.openejb.assembler.classic.Assembler startEjbs
+INFO: Started Ejb(deployment-id=TestEjb, ejb-name=TestEjb, container=Default Singleton Container)
+Apr 15, 2015 12:40:25 PM org.apache.tomee.catalina.TomcatWebAppBuilder deployWebApps
+INFO: using default host: localhost
+Apr 15, 2015 12:40:25 PM org.apache.tomee.catalina.TomcatWebAppBuilder init
+INFO: ------------------------- localhost -> /arquillian-protocol
+Apr 15, 2015 12:40:25 PM org.apache.openejb.util.OptionsLog info
+INFO: Using 'openejb.session.manager=org.apache.tomee.catalina.session.QuickSessionManager'
+Apr 15, 2015 12:40:25 PM org.apache.openejb.cdi.CdiBuilder initSingleton
+INFO: Existing thread singleton service in SystemInstance(): org.apache.openejb.cdi.ThreadSingletonServiceImpl@4a00b74b
+Apr 15, 2015 12:40:25 PM org.apache.openejb.cdi.OpenEJBLifecycle startApplication
+INFO: OpenWebBeans Container is starting...
+Apr 15, 2015 12:40:25 PM org.apache.webbeans.plugins.PluginLoader startUp
+INFO: Adding OpenWebBeansPlugin : [CdiPlugin]
+Apr 15, 2015 12:40:25 PM org.apache.webbeans.plugins.PluginLoader startUp
+Apr 15, 2015 12:40:25 PM org.apache.webbeans.config.BeansDeployer validateInjectionPoints
+INFO: All injection points were validated successfully.
+Apr 15, 2015 12:40:25 PM org.apache.openejb.cdi.OpenEJBLifecycle startApplication
+INFO: OpenWebBeans Container has started, it took 17 ms.
+Apr 15, 2015 12:40:25 PM org.apache.openejb.assembler.classic.Assembler createRecipe
+INFO: Creating Resource(id=jmx/Hello, aliases=Hello)
+Apr 15, 2015 12:40:25 PM org.superbiz.resource.jmx.factory.JMXBeanCreator create
+INFO: Unable to set value 12345 on field count
+Apr 15, 2015 12:40:25 PM org.apache.openejb.assembler.classic.Assembler logUnusedProperties
+WARNING: Property "code" not supported by "jmx/Hello"
+Apr 15, 2015 12:40:25 PM org.apache.openejb.assembler.classic.Assembler logUnusedProperties
+WARNING: Property "name" not supported by "jmx/Hello"
+Apr 15, 2015 12:40:25 PM org.apache.openejb.assembler.classic.Assembler logUnusedProperties
+WARNING: Property "count" not supported by "jmx/Hello"
+Apr 15, 2015 12:40:25 PM org.apache.openejb.assembler.classic.Assembler createApplication
+INFO: Deployed Application(path=/Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx)
+Apr 15, 2015 12:40:26 PM org.apache.openejb.client.EventLogger log
+INFO: RemoteInitialContextCreated{providerUri=http://localhost:61309/tomee/ejb}
+Apr 15, 2015 12:40:26 PM org.apache.openejb.assembler.classic.Assembler destroyApplication
+INFO: Undeploying app: /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx
+Apr 15, 2015 12:40:27 PM org.apache.openejb.arquillian.common.TomEEContainer undeploy
+INFO: cleaning /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx.ear
+Apr 15, 2015 12:40:27 PM org.apache.openejb.arquillian.common.TomEEContainer undeploy
+INFO: cleaning /Users/jgallimore/tmp/tomee-1.7.x/examples/resources-jmx-example/resources-jmx-ejb/target/arquillian-test-working-dir/0/jmx
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 18.464 sec
+Apr 15, 2015 12:40:27 PM org.apache.catalina.core.StandardServer await
+INFO: A valid shutdown command was received via the shutdown port. Stopping the Server instance.
+Apr 15, 2015 12:40:27 PM org.apache.coyote.AbstractProtocol pause
+INFO: Pausing ProtocolHandler ["http-bio-61309"]
+Apr 15, 2015 12:40:27 PM org.apache.coyote.AbstractProtocol pause
+INFO: Pausing ProtocolHandler ["ajp-bio-8009"]
+Apr 15, 2015 12:40:27 PM org.apache.catalina.core.StandardService stopInternal
+INFO: Stopping service Catalina
+Apr 15, 2015 12:40:27 PM org.apache.coyote.AbstractProtocol stop
+INFO: Stopping ProtocolHandler ["http-bio-61309"]
+Apr 15, 2015 12:40:27 PM org.apache.coyote.AbstractProtocol stop
+INFO: Stopping ProtocolHandler ["ajp-bio-8009"]
+Apr 15, 2015 12:40:27 PM org.apache.openejb.server.SimpleServiceManager stop
+INFO: Stopping server services
+Apr 15, 2015 12:40:27 PM org.apache.openejb.assembler.classic.Assembler destroyApplication
+INFO: Undeploying app: openejb
+Apr 15, 2015 12:40:27 PM org.apache.coyote.AbstractProtocol destroy
+INFO: Destroying ProtocolHandler ["http-bio-61309"]
+Apr 15, 2015 12:40:27 PM org.apache.coyote.AbstractProtocol destroy
+INFO: Destroying ProtocolHandler ["ajp-bio-8009"]
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+NOTE: as seguintes linhas mostrando a criação do recurso.
+
+[source,java]
+----
+Apr 15, 2015 12:40:24 PM org.apache.openejb.config.ConfigurationFactory configureService
+INFO: Configuring Service(id=jmx/Hello, type=Resource, provider-id=jmx/Hello)
+----
diff --git a/examples/rest-applicationcomposer-mockito/README_pt.adoc b/examples/rest-applicationcomposer-mockito/README_pt.adoc
new file mode 100644
index 0000000..a61e0f6
--- /dev/null
+++ b/examples/rest-applicationcomposer-mockito/README_pt.adoc
@@ -0,0 +1,87 @@
+= Exemplo do Application Composer e Mockito
+:index-group: Testing Techniques
+:jbake-type: page
+:jbake-status: published
+
+Neste exemplo, um serviço REST vai ser testado, usando Aplication Composer e Mockito.
+
+http://tomee.apache.org/tomee-8.0/docs/application-composer/index.html[Application Composer] é uma API de teste para o TomEE. É mais rápido inicializar do que o Arquillian. https://site.mockito.org/[Mockito] é uma estrutura de simulação. Ambos serão usados para testar um serviço REST.
+
+== Exemplo
+
+O exemplo de serviço REST é definido pela seguinte classe:
+
+[source,java]
+----
+@Singleton
+@Path("/greeting")
+public class GreetingService {
+
+    @Inject
+    private Messager messager;
+
+    @GET
+    public String message() {
+        return messager.message();
+    }
+}
+----
+
+Um bean, `messenger`, é injetado. Quando um cliente acessa o recurso `GET/greeting`, o conteúdo retornado ao cliente será o resultado da execução do método `messenger.message()`.
+
+A funcionalidade `Messager` é definida por esta interface:
+
+[source,java]
+----
+public interface Messager {
+
+    String message();
+}
+----
+
+== Testando o serviço REST
+
+Para testar este serviço REST, o Application Composer será usado em combinação com o Mockito:
+
+[source,java]
+----
+@RunWith(ApplicationComposer.class)
+public class GreetingServiceTest {
+
+    @Mock
+    private Messager messager;
+
+    @Configuration
+    public Properties configuration() {
+        return new Properties() {{
+            setProperty(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE, Boolean.TRUE.toString());
+        }};
+    }
+
+    @MockInjector
+    public Class<?> mockitoInjector() {
+        return MockitoInjector.class;
+    }
+
+    @Module
+    public Class<?>[] app() {
+        return new Class<?>[]{GreetingService.class, Messager.class};
+    }
+
+    @Test
+    public void checkMockIsUsed() throws IOException {
+        when(messager.message()).thenReturn("mockito");
+
+        final String message = IO.slurp(new URL("http://localhost:4204/GreetingServiceTest/greeting/"));
+        assertEquals("mockito", message);
+    }
+}
+----
+
+Podemos ver o uso e a configuração do ApplicationComposer. Mais informações podem ser encontradas em http://tomee.apache.org/tomee-8.0/docs/application-composer/index.html[aqui].
+
+Outra anotação interessante é `@MockInjector`. Isso informa ao contêiner iniciado pelo application composer que o Mockito é usado, para que as propriedades simuladas sejam injetadas.
+
+O método de teste substitui o método `messenger.message()`, retornando o valor "mockito". Em seguida, verifica se, acessando `GET greeting`, o conteúdo recuperado é "mockito ".
+
+Exemplo de código completo pode ser encontrado em https://github.com/apache/tomee/tree/master/examples/rest-applicationcomposer-mockito[aqui]. É um projeto maven, e os testes podem ser executados pelo comando `mvn clean install`.
diff --git a/examples/singleton-startup-ordering/README.adoc b/examples/singleton-startup-ordering/README.adoc
index 2906278..1db1630 100755
--- a/examples/singleton-startup-ordering/README.adoc
+++ b/examples/singleton-startup-ordering/README.adoc
@@ -21,7 +21,7 @@
 * The three EJB's contains a `@PostConstruct` annotation for the `init` method that is executed after dependency injection is done to perform any initialization. This method is invoked before the class is put into service.
 * The `init` method store the name of the bean class that is been initialized in the `Supervisor` bean.
 * The `Supervisor` bean is annotated with `@ApplicationScoped` to be able to share the list of bean names stored in the `records` attribute.
-* `SingletonA` and `SingletonB` are annotated with `@Startup` which means they are going to initialized upon application startup.  `SingletonC` will be initilized until the bean is going to be used in later injection point.
+* `SingletonA` and `SingletonB` are annotated with `@Startup` which means they are going to initialized upon application startup.  `SingletonC` will be initialized until the bean is going to be used in later injection point.
 * `SingletonB` is annotated with `@DependsOn("SingletonA")` to enforce a initialization order with respect to `SingletonA`.
 
 
@@ -145,8 +145,8 @@
 === The tests
 
 * The class `TestSingletonStartupOrder.java` contains two test that are executed in order via the annotation `@FixMethodOrder(MethodSorters.NAME_ASCENDING)`
-* `firstTest`: assert true if an only if the records stored in the `Supervisor.record` are equals to `[SingletonA, SingletonB]`. Notice that the order is validated too. In this test we don't expect to see `SingletonC` initilized since it's not annotated with `@Startup`.
-* `secondTest`:  This test inject `SingletonC` as a parameter in the tests, therefore it asserts to true if an only if the records stored in the `Supervisor.record` are equals to `[SingletonA, SingletonB, SingletonC]`
+* `firstTest`: assert true if and only if the records stored in the `Supervisor.record` are equals to `[SingletonA, SingletonB]`. Notice that the order is validated too. In this test we don't expect to see `SingletonC` initialized since it's not annotated with `@Startup`.
+* `secondTest`:  This test inject `SingletonC` as a parameter in the tests, therefore it asserts to true if and only if the records stored in the `Supervisor.record` are equals to `[SingletonA, SingletonB, SingletonC]`
 
 `TestSingletonStartupOrder.java`
 [source,java]
diff --git a/examples/singleton-startup-ordering/README_pt.adoc b/examples/singleton-startup-ordering/README_pt.adoc
new file mode 100755
index 0000000..811f158
--- /dev/null
+++ b/examples/singleton-startup-ordering/README_pt.adoc
@@ -0,0 +1,209 @@
+:index-group: Session Beans
+:jbake-type: page
+:jbake-status: status=published
+= Ordem de Inicialização Singleton
+
+Estes exemplos mostram na prática as anotações `@Startup` e `@DependsOn` em EJB's `singleton`.
+
+
+
+=== Executando os testes 
+[código,java]
+----
+mvn clean test 
+----
+
+
+
+=== O cenário
+
+* O exemplo é composto por três beans singleton : `SingletonA`, `SingletonB`, `SingletonC`.
+* Os três EJB's contém uma anotação `@PostConstruct` para o método `init`que é executado depois da injeção de dependência estar terminada, para otimizar qualquer inicialização. O método é invocado antes que classe seja colocada no serviço.
+* O método `init` armazena o nome do classe bean que foi inicializada no bean `Supervisor`.
+* O bean `Supervisor` está anotado com `@ApplicationScoped` para ser capaz de compartilhar a lista de nomes do bean armazenadas no atributo `records`.
+* `SingletonA` e `SingletonB` são anotados com `@Startup` o que siginifica, que eles serão inicializados na inicialização do aplicativo. `SingletonC` será inicializado, até que o bean seja usado, no ponto de injeção posterior.
+* `SingletonB` é anotado com `@DependsOn("SingletonA")` para obrigar uma inicialização ordenada com relação ao `SingletonA`.
+
+
+
+`SingletonA.java`: Singleton EJB anotado com `@Startup`. Depende do `Supervisor` EJB.
+
+[código,java]
+----
+package org.foo;
+
+import javax.annotation.PostConstruct;
+import javax.ejb.Singleton;
+import javax.ejb.Startup;
+import javax.inject.Inject;
+import java.util.logging.Logger;
+
+@Singleton
+@Startup
+public class SingletonA {
+
+    @Inject
+    Supervisor supervisor;
+
+    private final static Logger LOGGER = Logger.getLogger(SingletonA.class.getName());
+
+
+    @PostConstruct
+    public void init() {
+        LOGGER.info("Hi from init in class: " + this.getClass().getName());
+        supervisor.addRecord(this.getClass().getSimpleName());
+    }
+}
+----
+
+
+`SingletonB.java`: Singleton EJB anotado com `@Startup` e `DependsOn`. Depende do `Supervisor` EJB.
+
+[código,java]
+----
+package org.foo;
+
+import javax.annotation.PostConstruct;
+import javax.ejb.DependsOn;
+import javax.ejb.Singleton;
+import javax.ejb.Startup;
+import javax.inject.Inject;
+import java.util.logging.Logger;
+
+@Singleton
+@Startup
+@DependsOn("SingletonA")
+public class SingletonB {
+
+    @Inject
+    Supervisor supervisor;
+
+    private final static Logger LOGGER = Logger.getLogger(SingletonB.class.getName());
+
+    @PostConstruct
+    public void init() {
+        LOGGER.info("Hi from init in class: " + this.getClass().getName());
+        supervisor.addRecord(this.getClass().getSimpleName());
+    }
+}
+----
+
+
+`SingletonC.java`: Singleton EJB. Depende do `Supervisor` EJB.
+
+[código,java]
+----
+import javax.annotation.PostConstruct;
+import javax.ejb.Singleton;
+import javax.inject.Inject;
+import java.util.logging.Logger;
+
+@Singleton
+public class SingletonC {
+    @Inject
+    Supervisor supervisor;
+
+    private final static Logger LOGGER = Logger.getLogger(SingletonC.class.getName());
+
+    @PostConstruct
+    public void init() {
+        LOGGER.info("Hi from init in class: " + this.getClass().getName());
+        supervisor.addRecord(this.getClass().getSimpleName());
+
+    }
+
+    public String hello() {
+        return "Hello from SingletonC.class";
+    }
+}
+----
+
+
+`Supervisor.java`: Bean com escopo de aplicação que mantém uma lista de Nomes do Bean.
+
+[código,java]
+----
+import javax.enterprise.context.ApplicationScoped;
+import java.util.ArrayList;
+import java.util.List;
+
+@ApplicationScoped
+public class Supervisor {
+    private final List<String> records = new ArrayList<>();
+
+    public void addRecord(String beanClass){
+        records.add(beanClass);
+    }
+
+    public String getRecord(){
+        return records.toString();
+    }
+}
+----
+
+
+=== Os testes
+
+* A classe `TestSingletonStartupOrder.java` contem dois testes, que são executados em ordem, via a anotação `@FixMethodOrder(MethodSorters.NAME_ASCENDING)`
+* `primeiroTest`: afirmar verdadeiro se e somente, se os registros armazenados no `Supervisor.record` forem iguais para `[SingletonA, SingletonB]`. Observe que a ordem também é validada. Neste teste, nós não esperamos ver `SingletonC` inicializado, uma vez que não está anotado com `@Startup`.
+* `segundoTest`:  Este teste injeta `SingletonC` como um parâmetro nos testes, portanto, é afirmado verdadeiro se e somente, se os registros armazenados no `Supervisor.record` forem iguais para `[SingletonA, SingletonB, SingletonC]`
+
+`TestSingletonStartupOrder.java`
+[código,java]
+----
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.asset.StringAsset;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.MethodSorters;
+import org.foo.SingletonA;
+import org.foo.SingletonB;
+import org.foo.SingletonC;
+import org.foo.Supervisor;
+
+import java.util.logging.Logger;
+
+import static junit.framework.TestCase.assertTrue;
+
+
+@RunWith(Arquillian.class)
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class TestSingletonStartupOrder {
+    private final static Logger LOGGER = Logger.getLogger(TestSingletonStartupOrder.class.getName());
+
+    @Deployment()
+    public static WebArchive createDeployment() {
+        final WebArchive webArchive = ShrinkWrap.create(WebArchive.class, "test.war")
+                                                .addClass(SingletonA.class)
+                                                .addClass(SingletonB.class)
+                                                .addClass(SingletonC.class)
+                                                .addClass(Supervisor.class)
+                                                .addAsWebInfResource(new StringAsset("<beans/>"), "beans.xml");
+        return webArchive;
+    }
+
+
+    @Test
+    public void firstTest(Supervisor supervisor) {
+        LOGGER.info("SUPERVISOR: [" + supervisor.getRecord() + "]");
+        assertTrue(supervisor.getRecord().equals("[SingletonA, SingletonB]"));
+    }
+
+    @Test
+    public void secondTest(Supervisor supervisor, SingletonC singletonC) {
+        LOGGER.info(singletonC.hello());
+        LOGGER.info("SUPERVISOR: [" + supervisor.getRecord() + "]");
+        assertTrue(supervisor.getRecord().equals("[SingletonA, SingletonB, SingletonC]"));
+    }
+}
+----
+
+=== Sobre a arquitetura de Teste
+
+Os casos de teste deste projeto, estão construidos, usando Arquillian e TomEE
+Remoto. A configuração arquillian pode ser encontrada em 
+`src/test/resources/arquillian.xml`
\ No newline at end of file
diff --git a/examples/tomee-jersey-eclipselink/README.adoc b/examples/tomee-jersey-eclipselink/README.adoc
index 4a4dcca..6d5faa5 100644
--- a/examples/tomee-jersey-eclipselink/README.adoc
+++ b/examples/tomee-jersey-eclipselink/README.adoc
@@ -89,7 +89,7 @@
     }
 ----
 
-Now, that we have a service class, defining the resources provided by the application, we extent the `javax.ws.rs.core.Application` class and we add our `PersonService`:
+Now, that we have a service class, defining the resources provided by the application, we extend the `javax.ws.rs.core.Application` class and we add our `PersonService`:
 
 [source,java]
 ----
diff --git a/examples/tomee-jersey-eclipselink/README_pt.adoc b/examples/tomee-jersey-eclipselink/README_pt.adoc
new file mode 100644
index 0000000..a62fdef
--- /dev/null
+++ b/examples/tomee-jersey-eclipselink/README_pt.adoc
@@ -0,0 +1,188 @@
+= JPA com EclipseLink e Jersey
+:index-group: JPA
+:jbake-type: page
+:jbake-status: published
+
+Neste exemplo, um serviço da web é criado para armazenar e recuperar dados do banco de dados.
+https://jersey.github.io/[Jersey] será usado para criar o serviço da web..
+Para o banco de dados, o provedor JPA usado será https://www.eclipse.org/eclipselink/[EclipseLink].
+
+O serviço da web irá armazenar e recuperar informações sobre pessoas:
+
+[source,java]
+----
+@Entity
+@XmlRootElement
+@NamedQuery(name = "Person.findAll", query = "select p from Person p")
+public class Person {
+
+    @Id
+    @GeneratedValue
+    private long id;
+    private String name;
+
+    public long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+----
+
+Os dois serviços que nosso aplicativo oferece são: persistir uma pessoa, recuperando todas as pessoas do banco de dados:
+
+[source,java]
+----
+@Singleton
+@Lock(LockType.READ)
+public class PersonDAO {
+
+    @PersistenceContext
+    private EntityManager em;
+
+    public Person save(final String name) {
+        final Person person = new Person();
+        person.setName(name);
+        em.persist(person);
+        return person;
+    }
+
+    public List<Person> findAll() {
+        return em.createNamedQuery("Person.findAll", Person.class).getResultList();
+    }
+----
+
+A seguir, estamos prontos para expor como um serviço esta lógica de negócios:
+
+[source,java]
+----
+@Path("/person")
+@RequestScoped
+public class PersonService {
+
+    @Inject
+    private PersonDAO dao;
+
+    public PersonService() {
+        System.out.println();
+    }
+
+    @GET
+    @Path("/create/{name}")
+    public Person create(@PathParam("name") final String name) {
+        return dao.save(name);
+    }
+
+    @GET
+    @Path("/all")
+    public List<Person> list() {
+        return dao.findAll();
+    }
+----
+
+Agora que temos uma classe de serviço, definindo os recursos fornecidos pelo aplicativo, estendemos a classe `javax.ws.rs.core.Application` e adicionamos nosso `PersonService`:
+
+[source,java]
+----
+public class JerseyApplication extends Application {
+
+    @Override
+    public Set<Class<?>> getClasses() {
+        final Set<Class<?>> classes = new HashSet<Class<?>>();
+        classes.add(PersonService.class);
+        return classes;
+    }
+}
+----
+
+Há mais uma etapa a ser executada para configurar um servlet fornecido por Jersey.
+Isso pode ser feito em `webapp/WEB-INF/web.xml`:
+
+[source,xml]
+----
+<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
+         version="3.0">
+  <servlet>
+    <servlet-name>Jersey Web Application</servlet-name>
+    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
+    <init-param>
+      <param-name>javax.ws.rs.Application</param-name>
+      <param-value>org.superbiz.service.JerseyApplication</param-value>
+    </init-param>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+  <servlet-mapping>
+    <servlet-name>Jersey Web Application</servlet-name>
+    <url-pattern>/*</url-pattern>
+  </servlet-mapping>
+</web-app>
+----
+
+O serviço da web está pronto para ser testado. Para isso, vamos escrever um teste de unidade usando http://arquillian.org/[Arquillian]:
+
+[source,java]
+----
+@RunWith(Arquillian.class)
+public class JerseyApplicationTest {
+
+    @Deployment(testable = false)
+    public static WebArchive createDeployment() {
+        return ShrinkWrap.create(WebArchive.class, "jersey-application.war")
+                .addPackage(JerseyApplication.class.getPackage())
+                .addPackage(Person.class.getPackage())
+                .addPackage(PersonDAO.class.getPackage())
+                .addAsManifestResource(new FileAsset(new File("src/main/webapp/WEB-INF/web.xml")), "web.xml")
+                .addAsManifestResource(new ClassLoaderAsset("META-INF/persistence.xml"), "persistence.xml")
+                .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
+    }
+
+    @ArquillianResource
+    private URL webapp;
+
+    @Test
+    public void test() {
+        get("person/create/TestPerson");
+
+        String allPersons = get("person/all");
+
+        assertTrue(allPersons.contains("<name>TestPerson</name>"));
+    }
+
+    private String get(String url) {
+        final CloseableHttpClient client = HttpClients.custom().build();
+        final HttpHost httpHost = new HttpHost(webapp.getHost(), webapp.getPort(), webapp.getProtocol());
+        final HttpClientContext context = HttpClientContext.create();
+
+        final HttpGet get = new HttpGet(webapp.toExternalForm() + url);
+        CloseableHttpResponse response = null;
+        try {
+            response = client.execute(httpHost, get, context);
+            return EntityUtils.toString(response.getEntity());
+        } catch (final IOException e) {
+            throw new IllegalStateException(e);
+        } finally {
+            try {
+                IO.close(response);
+            } catch (final IOException e) {
+                // no-op
+            }
+        }
+    }
+}
+----
+
+Usamos o Arquillian para iniciar programaticamente um novo container de teste. Em um teste, uma pessoa é persistida e sua presença no banco de dados é verificada recuperando todas as entidades de pessoa.
+
+Um exemplo completo pode ser encontrado https://github.com/apache/tomee/tree/master/examples/tomee-jersey-eclipselink[aqui].
+É um projeto maven, e o teste pode ser executado com o comando `mvn clean install`.