You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2016/12/04 11:01:44 UTC

svn commit: r1772522 [36/45] - in /tomee/site/trunk: content/ content/admin/ content/admin/cluster/ content/admin/configuration/ content/advanced/ content/advanced/applicationcomposer/ content/advanced/client/ content/advanced/setup/ content/advanced/s...

Added: tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/injection-of-env-entry.adoc
URL: http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/injection-of-env-entry.adoc?rev=1772522&view=auto
==============================================================================
--- tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/injection-of-env-entry.adoc (added)
+++ tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/injection-of-env-entry.adoc Sun Dec  4 11:01:40 2016
@@ -0,0 +1,271 @@
+= Using EnvEntries
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example injection-of-env-entry can be browsed at https://github.com/apache/tomee/tree/master/examples/injection-of-env-entry
+
+
+The `@Resource` annotation can be used to inject several things including
+DataSources, Topics, Queues, etc.  Most of these are container supplied objects.
+
+It is possible, however, to supply your own values to be injected via an `<env-entry>`
+in your `ejb-jar.xml` or `web.xml` deployment descriptor.  Java EE 6 supported `<env-entry>` types
+are limited to the following:
+
+ - 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)
+
+See also the link:../custom-injection[Custom Injection] exmaple for a TomEE and OpenEJB feature that will let you
+use more than just the above types as well as declare `<env-entry>` items with a plain properties file.
+
+=  Using @Resource for basic properties
+
+The use of the `@Resource` annotation isn't limited to setters.  For
+example, this annotation could have been used on the corresponding *field*
+like so:
+
+
+[source,java]
+----
+@Resource
+private int maxLineItems;
+
+A fuller example might look like this:
+
+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);
+    }
+}
+----
+
+
+Here we have an `@Singleton` bean called `Confuration` that has the following properties (`<env-entry>` items)
+
+- String color
+- Shape shape
+- Class strategy
+- long date
+
+==  Supplying @Resource values for <env-entry> items in ejb-jar.xml
+
+The values for our `color`, `shape`, `strategy` and `date` properties are supplied via `<env-entry>` elements in the `ejb-jar.xml` file or the
+`web.xml` file like so:
+
+
+
+[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>
+----
+
+
+
+===  Using the @Resource 'name' attribute
+
+Note that `date` was referenced by `name` as:
+
+
+[source,java]
+----
+@Resource(name = "date")
+private long date;
+
+When the `@Resource(name)` is used, you do not need to specify the full class name of the bean and can do it briefly like so:
+
+  <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>
+
+Conversly, `color` was not referenced by `name`
+
+@Resource
+private String color;
+
+When something is not referenced by `name` in the `@Resource` annotation a default name is created.  The format is essentially this:
+
+bean.getClass() + "/" + field.getName()
+
+So the default `name` of the above `color` property ends up being `org.superbiz.injection.enventry.Configuration/color`.  This is the name
+we must use when we attempt to decalre a value for it in xml.
+
+  <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 and Enum (Enumerations)
+
+The `shape` field is actually a custom Java Enum type
+
+package org.superbiz.injection.enventry;
+
+public enum Shape {
+
+    CIRCLE,
+    TRIANGLE,
+    SQUARE
+}
+----
+
+
+As of Java EE 6, java.lang.Enum types are allowed as `<env-entry>` items.  Declaring one in xml is done using the actual enum's class name like so:
+
+          <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>
+
+Do not use `<env-entry-type>java.lang.Enum</env-entry-type>` or it will not work!
+
+==  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());
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ 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
+----
+
+    

Propchange: tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/injection-of-env-entry.adoc
------------------------------------------------------------------------------
    svn:executable = *

Added: tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/interceptors.adoc
URL: http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/interceptors.adoc?rev=1772522&view=auto
==============================================================================
--- tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/interceptors.adoc (added)
+++ tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/interceptors.adoc Sun Dec  4 11:01:40 2016
@@ -0,0 +1,888 @@
+= Interceptors
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example interceptors can be browsed at https://github.com/apache/tomee/tree/master/examples/interceptors
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  ClassLevelInterceptorOne
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class ClassLevelInterceptorOne {
+
+    @AroundInvoke
+    protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+}
+----
+
+
+==  ClassLevelInterceptorSuperClassOne
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class ClassLevelInterceptorSuperClassOne {
+
+    @AroundInvoke
+    protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+}
+----
+
+
+==  ClassLevelInterceptorSuperClassTwo
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class ClassLevelInterceptorSuperClassTwo extends SuperClassOfClassLevelInterceptor {
+
+    @AroundInvoke
+    protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+}
+----
+
+
+==  ClassLevelInterceptorTwo
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class ClassLevelInterceptorTwo {
+
+    @AroundInvoke
+    protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+}
+----
+
+
+==  DefaultInterceptorOne
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.annotation.PostConstruct;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class DefaultInterceptorOne {
+
+    @AroundInvoke
+    protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+
+    @PostConstruct
+    protected void postConstructInterceptor(InvocationContext ic) throws Exception {
+        Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+}
+----
+
+
+==  DefaultInterceptorTwo
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class DefaultInterceptorTwo {
+
+    @AroundInvoke
+    protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+}
+----
+
+
+==  FullyIntercepted
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import java.util.List;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public interface FullyIntercepted {
+
+    List<String> businessMethod();
+
+    List<String> methodWithDefaultInterceptorsExcluded();
+}
+----
+
+
+==  FullyInterceptedBean
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.ejb.Local;
+import javax.ejb.Stateless;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.Interceptors;
+import javax.interceptor.InvocationContext;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+@Stateless
+@Local
+@Interceptors({ClassLevelInterceptorOne.class, ClassLevelInterceptorTwo.class})
+public class FullyInterceptedBean extends FullyInterceptedSuperClass implements FullyIntercepted {
+
+    @Interceptors({MethodLevelInterceptorOne.class, MethodLevelInterceptorTwo.class})
+    public List<String> businessMethod() {
+        List<String> list = new ArrayList<String>();
+        list.add("businessMethod");
+        return list;
+    }
+
+    @Interceptors({MethodLevelInterceptorOne.class, MethodLevelInterceptorTwo.class})
+    public List<String> methodWithDefaultInterceptorsExcluded() {
+        List<String> list = new ArrayList<String>();
+        list.add("methodWithDefaultInterceptorsExcluded");
+        return list;
+    }
+
+    @AroundInvoke
+    protected Object beanClassBusinessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, "beanClassBusinessMethodInterceptor");
+    }
+}
+----
+
+
+==  FullyInterceptedSuperClass
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.interceptor.Interceptors;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+@Interceptors({ClassLevelInterceptorSuperClassOne.class, ClassLevelInterceptorSuperClassTwo.class})
+public class FullyInterceptedSuperClass {
+}
+----
+
+
+==  MethodLevelInterceptorOne
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class MethodLevelInterceptorOne {
+
+    @AroundInvoke
+    protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+}
+----
+
+
+==  MethodLevelInterceptorOnlyIntf
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import java.io.Serializable;
+import java.util.List;
+
+public interface MethodLevelInterceptorOnlyIntf<T extends Serializable> {
+    public List<T> makePersistent(T entity);
+}
+----
+
+
+==  MethodLevelInterceptorOnlyParent
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import java.util.List;
+
+public interface MethodLevelInterceptorOnlyParent extends MethodLevelInterceptorOnlyIntf<String> {
+
+    public List<String> makePersistent(String entity);
+}
+----
+
+
+==  MethodLevelInterceptorOnlySLSBean
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.ejb.Local;
+import javax.ejb.Stateless;
+import javax.interceptor.Interceptors;
+import java.util.ArrayList;
+import java.util.List;
+
+@Local(MethodLevelInterceptorOnlyParent.class)
+@Stateless
+public class MethodLevelInterceptorOnlySLSBean implements MethodLevelInterceptorOnlyParent {
+
+    @Interceptors(MethodLevelInterceptorOne.class)
+    public List<String> makePersistent(String entity) {
+        List<String> list = new ArrayList<String>();
+        list.add("makePersistent");
+        return list;
+    }
+}
+----
+
+
+==  MethodLevelInterceptorTwo
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class MethodLevelInterceptorTwo {
+
+    @AroundInvoke
+    protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+}
+----
+
+
+==  SecondStatelessInterceptedBean
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.ejb.Stateless;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.Interceptors;
+import javax.interceptor.InvocationContext;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @version $Rev: 808273 $ $Date: 2009-08-26 20:42:06 -0700 (Wed, 26 Aug 2009) $
+ */
+@Stateless
+@Interceptors({ClassLevelInterceptorOne.class, ClassLevelInterceptorTwo.class})
+public class SecondStatelessInterceptedBean implements SecondStatelessInterceptedLocal {
+
+    @Interceptors({MethodLevelInterceptorOne.class, MethodLevelInterceptorTwo.class})
+    public List<String> methodWithDefaultInterceptorsExcluded() {
+        List<String> list = new ArrayList<String>();
+        list.add("methodWithDefaultInterceptorsExcluded");
+        return list;
+    }
+
+    @AroundInvoke
+    protected Object beanClassBusinessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+}
+----
+
+
+==  SecondStatelessInterceptedLocal
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import java.util.List;
+
+/**
+ * @version $Rev: 808273 $ $Date: 2009-08-26 20:42:06 -0700 (Wed, 26 Aug 2009) $
+ */
+public interface SecondStatelessInterceptedLocal {
+    List<String> methodWithDefaultInterceptorsExcluded();
+}
+----
+
+
+==  SuperClassOfClassLevelInterceptor
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.annotation.PostConstruct;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.InvocationContext;
+
+/**
+ * @version $Rev: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class SuperClassOfClassLevelInterceptor {
+
+    @AroundInvoke
+    protected Object businessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+
+    @PostConstruct
+    protected void postConstructInterceptor(InvocationContext ic) throws Exception {
+        Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+}
+----
+
+
+==  ThirdSLSBean
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.ejb.Stateless;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.ExcludeClassInterceptors;
+import javax.interceptor.ExcludeDefaultInterceptors;
+import javax.interceptor.Interceptors;
+import javax.interceptor.InvocationContext;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @version $Rev: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $
+ */
+@Stateless
+@Interceptors({ClassLevelInterceptorOne.class, ClassLevelInterceptorTwo.class})
+@ExcludeDefaultInterceptors
+public class ThirdSLSBean implements ThirdSLSBeanLocal {
+
+    @Interceptors({MethodLevelInterceptorOne.class, MethodLevelInterceptorTwo.class})
+    public List<String> businessMethod() {
+        List<String> list = new ArrayList<String>();
+        list.add("businessMethod");
+        return list;
+    }
+
+    @Interceptors({MethodLevelInterceptorOne.class, MethodLevelInterceptorTwo.class})
+    @ExcludeClassInterceptors
+    public List<String> anotherBusinessMethod() {
+        List<String> list = new ArrayList<String>();
+        list.add("anotherBusinessMethod");
+        return list;
+    }
+
+
+    @AroundInvoke
+    protected Object beanClassBusinessMethodInterceptor(InvocationContext ic) throws Exception {
+        return Utils.addClassSimpleName(ic, this.getClass().getSimpleName());
+    }
+}
+----
+
+
+==  ThirdSLSBeanLocal
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import java.util.List;
+
+/**
+ * @version $Rev: 607320 $ $Date: 2007-12-28 12:15:06 -0800 (Fri, 28 Dec 2007) $
+ */
+public interface ThirdSLSBeanLocal {
+    List<String> businessMethod();
+
+    List<String> anotherBusinessMethod();
+}
+----
+
+
+==  Utils
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import javax.interceptor.InvocationContext;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @version $Rev: 808273 $ $Date: 2009-08-26 20:42:06 -0700 (Wed, 26 Aug 2009) $
+ */
+public class Utils {
+
+    public static List<String> addClassSimpleName(InvocationContext ic, String classSimpleName) throws Exception {
+        List<String> list = new ArrayList<String>();
+        list.add(classSimpleName);
+        List<String> listOfStrings = (List<String>) ic.proceed();
+        if (listOfStrings != null) {
+            list.addAll(listOfStrings);
+        }
+        return list;
+    }
+}
+----
+
+
+==  ejb-jar.xml
+
+
+[source,xml]
+----
+<ejb-jar 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/ejb-jar_3_0.xsd"
+         version="3.0">
+  <interceptors>
+    <interceptor>
+      <interceptor-class>org.superbiz.interceptors.DefaultInterceptorOne</interceptor-class>
+    </interceptor>
+    <interceptor>
+      <interceptor-class>org.superbiz.interceptors.DefaultInterceptorTwo</interceptor-class>
+    </interceptor>
+  </interceptors>
+  <assembly-descriptor>
+    <interceptor-binding>
+      <ejb-name>*</ejb-name>
+      <interceptor-class>org.superbiz.interceptors.DefaultInterceptorOne</interceptor-class>
+    </interceptor-binding>
+    <interceptor-binding>
+      <ejb-name>*</ejb-name>
+      <interceptor-class>org.superbiz.interceptors.DefaultInterceptorTwo</interceptor-class>
+    </interceptor-binding>
+    <interceptor-binding>
+      <ejb-name>FullyInterceptedBean</ejb-name>
+      <exclude-default-interceptors>true</exclude-default-interceptors>
+      <method>
+        <method-name>methodWithDefaultInterceptorsExcluded</method-name>
+      </method>
+    </interceptor-binding>
+    <interceptor-binding>
+      <ejb-name>SecondStatelessInterceptedBean</ejb-name>
+      <exclude-default-interceptors>true</exclude-default-interceptors>
+    </interceptor-binding>
+    <interceptor-binding>
+      <ejb-name>MethodLevelInterceptorOnlySLSBean</ejb-name>
+      <exclude-default-interceptors>true</exclude-default-interceptors>
+    </interceptor-binding>
+  </assembly-descriptor>
+</ejb-jar>
+----
+
+
+==  FullyInterceptedTest
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import junit.framework.TestCase;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+/**
+ * @version $Rev: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $
+ */
+public class FullyInterceptedTest extends TestCase {
+
+    private InitialContext initCtx;
+
+    @Before
+    public void setUp() throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+        properties.setProperty("openejb.deployments.classpath.include", ".*interceptors/target/classes.*");
+
+        initCtx = new InitialContext(properties);
+    }
+
+    @Test
+    public void testBusinessMethod() throws Exception {
+
+        FullyIntercepted fullyIntercepted = (FullyIntercepted) initCtx.lookup("FullyInterceptedBeanLocal");
+
+        assert fullyIntercepted != null;
+
+        List<String> expected = new ArrayList<String>();
+        expected.add("DefaultInterceptorOne");
+        expected.add("DefaultInterceptorTwo");
+        expected.add("ClassLevelInterceptorSuperClassOne");
+        expected.add("ClassLevelInterceptorSuperClassTwo");
+        expected.add("ClassLevelInterceptorOne");
+        expected.add("ClassLevelInterceptorTwo");
+        expected.add("MethodLevelInterceptorOne");
+        expected.add("MethodLevelInterceptorTwo");
+        expected.add("beanClassBusinessMethodInterceptor");
+        expected.add("businessMethod");
+
+        List<String> actual = fullyIntercepted.businessMethod();
+        assert expected.equals(actual) : "Expected " + expected + ", but got " + actual;
+    }
+
+    @Test
+    public void testMethodWithDefaultInterceptorsExcluded() throws Exception {
+
+        FullyIntercepted fullyIntercepted = (FullyIntercepted) initCtx.lookup("FullyInterceptedBeanLocal");
+
+        assert fullyIntercepted != null;
+
+        List<String> expected = new ArrayList<String>();
+        expected.add("ClassLevelInterceptorSuperClassOne");
+        expected.add("ClassLevelInterceptorSuperClassTwo");
+        expected.add("ClassLevelInterceptorOne");
+        expected.add("ClassLevelInterceptorTwo");
+        expected.add("MethodLevelInterceptorOne");
+        expected.add("MethodLevelInterceptorTwo");
+        expected.add("beanClassBusinessMethodInterceptor");
+        expected.add("methodWithDefaultInterceptorsExcluded");
+
+        List<String> actual = fullyIntercepted.methodWithDefaultInterceptorsExcluded();
+        assert expected.equals(actual) : "Expected " + expected + ", but got " + actual;
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        initCtx.close();
+    }
+}
+----
+
+
+==  MethodLevelInterceptorOnlyTest
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+/**
+ * @version $Rev: 895825 $ $Date: 2010-01-04 15:35:22 -0800 (Mon, 04 Jan 2010) $
+ */
+public class MethodLevelInterceptorOnlyTest extends TestCase {
+    private InitialContext initCtx;
+
+    @Before
+    public void setUp() throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+        properties.setProperty("openejb.deployments.classpath.include", ".*interceptors/target/classes.*");
+
+        initCtx = new InitialContext(properties);
+    }
+
+    @Test
+    public void testInterceptedGenerifiedBusinessIntfMethod() throws Exception {
+        MethodLevelInterceptorOnlyParent bean = (MethodLevelInterceptorOnlyParent) initCtx.lookup("MethodLevelInterceptorOnlySLSBeanLocal");
+
+        assert bean != null;
+
+        List<String> expected = new ArrayList<String>();
+        expected.add("MethodLevelInterceptorOne");
+        expected.add("makePersistent");
+
+        List<String> actual = bean.makePersistent(null);
+        assert expected.equals(actual) : "Expected " + expected + ", but got " + actual;
+    }
+}
+----
+
+
+==  SecondStatelessInterceptedTest
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+/**
+ * @version $Rev: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $
+ */
+public class SecondStatelessInterceptedTest extends TestCase {
+
+    private InitialContext initCtx;
+
+    @Before
+    public void setUp() throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+        properties.setProperty("openejb.deployments.classpath.include", ".*interceptors/target/classes.*");
+
+        initCtx = new InitialContext(properties);
+    }
+
+    @Test
+    public void testMethodWithDefaultInterceptorsExcluded() throws Exception {
+        SecondStatelessInterceptedLocal bean =
+                (SecondStatelessInterceptedLocal) initCtx.lookup("SecondStatelessInterceptedBeanLocal");
+
+        assert bean != null;
+
+        List<String> expected = new ArrayList<String>();
+        expected.add("ClassLevelInterceptorOne");
+        expected.add("ClassLevelInterceptorTwo");
+        expected.add("MethodLevelInterceptorOne");
+        expected.add("MethodLevelInterceptorTwo");
+        expected.add("SecondStatelessInterceptedBean");
+        expected.add("methodWithDefaultInterceptorsExcluded");
+
+        List<String> actual = bean.methodWithDefaultInterceptorsExcluded();
+        assert expected.equals(actual) : "Expected " + expected + ", but got " + actual;
+    }
+}
+----
+
+
+==  ThirdSLSBeanTest
+
+
+[source,java]
+----
+package org.superbiz.interceptors;
+
+import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+/**
+ * @version $Rev: 1090810 $ $Date: 2011-04-10 07:49:26 -0700 (Sun, 10 Apr 2011) $
+ */
+public class ThirdSLSBeanTest extends TestCase {
+    private InitialContext initCtx;
+
+    @Before
+    public void setUp() throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory");
+        properties.setProperty("openejb.deployments.classpath.include", ".*interceptors/target/classes.*");
+
+        initCtx = new InitialContext(properties);
+    }
+
+    @Test
+    public void testMethodWithDefaultInterceptorsExcluded() throws Exception {
+        ThirdSLSBeanLocal bean = (ThirdSLSBeanLocal) initCtx.lookup("ThirdSLSBeanLocal");
+
+        assert bean != null;
+
+        List<String> expected = new ArrayList<String>();
+        expected.add("ClassLevelInterceptorOne");
+        expected.add("ClassLevelInterceptorTwo");
+        expected.add("MethodLevelInterceptorOne");
+        expected.add("MethodLevelInterceptorTwo");
+        expected.add("ThirdSLSBean");
+        expected.add("businessMethod");
+
+        List<String> actual = bean.businessMethod();
+        assert expected.equals(actual) : "Expected " + expected + ", but got " + actual;
+    }
+
+    @Test
+    public void testMethodWithDefaultAndClassInterceptorsExcluded() throws Exception {
+        ThirdSLSBeanLocal bean = (ThirdSLSBeanLocal) initCtx.lookup("ThirdSLSBeanLocal");
+
+        assert bean != null;
+
+        List<String> expected = new ArrayList<String>();
+        expected.add("MethodLevelInterceptorOne");
+        expected.add("MethodLevelInterceptorTwo");
+        expected.add("ThirdSLSBean");
+        expected.add("anotherBusinessMethod");
+
+        List<String> actual = bean.anotherBusinessMethod();
+        assert expected.equals(actual) : "Expected " + expected + ", but got " + actual;
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.interceptors.FullyInterceptedTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/interceptors
+INFO - openejb.base = /Users/dblevins/examples/interceptors
+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 - Using 'openejb.deployments.classpath.include=.*interceptors/target/classes.*'
+INFO - Found EjbModule in classpath: /Users/dblevins/examples/interceptors/target/classes
+INFO - Beginning load: /Users/dblevins/examples/interceptors/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/interceptors/classpath.ear
+INFO - Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container)
+INFO - Auto-creating a container for bean FullyInterceptedBean: Container(type=STATELESS, id=Default Stateless Container)
+INFO - Enterprise application "/Users/dblevins/examples/interceptors/classpath.ear" loaded.
+INFO - Assembling app: /Users/dblevins/examples/interceptors/classpath.ear
+INFO - Jndi(name=FullyInterceptedBeanLocal) --> Ejb(deployment-id=FullyInterceptedBean)
+INFO - Jndi(name=global/classpath.ear/interceptors/FullyInterceptedBean!org.superbiz.interceptors.FullyIntercepted) --> Ejb(deployment-id=FullyInterceptedBean)
+INFO - Jndi(name=global/classpath.ear/interceptors/FullyInterceptedBean) --> Ejb(deployment-id=FullyInterceptedBean)
+INFO - Jndi(name=ThirdSLSBeanLocal) --> Ejb(deployment-id=ThirdSLSBean)
+INFO - Jndi(name=global/classpath.ear/interceptors/ThirdSLSBean!org.superbiz.interceptors.ThirdSLSBeanLocal) --> Ejb(deployment-id=ThirdSLSBean)
+INFO - Jndi(name=global/classpath.ear/interceptors/ThirdSLSBean) --> Ejb(deployment-id=ThirdSLSBean)
+INFO - Jndi(name=SecondStatelessInterceptedBeanLocal) --> Ejb(deployment-id=SecondStatelessInterceptedBean)
+INFO - Jndi(name=global/classpath.ear/interceptors/SecondStatelessInterceptedBean!org.superbiz.interceptors.SecondStatelessInterceptedLocal) --> Ejb(deployment-id=SecondStatelessInterceptedBean)
+INFO - Jndi(name=global/classpath.ear/interceptors/SecondStatelessInterceptedBean) --> Ejb(deployment-id=SecondStatelessInterceptedBean)
+INFO - Jndi(name=MethodLevelInterceptorOnlySLSBeanLocal) --> Ejb(deployment-id=MethodLevelInterceptorOnlySLSBean)
+INFO - Jndi(name=global/classpath.ear/interceptors/MethodLevelInterceptorOnlySLSBean!org.superbiz.interceptors.MethodLevelInterceptorOnlyParent) --> Ejb(deployment-id=MethodLevelInterceptorOnlySLSBean)
+INFO - Jndi(name=global/classpath.ear/interceptors/MethodLevelInterceptorOnlySLSBean) --> Ejb(deployment-id=MethodLevelInterceptorOnlySLSBean)
+INFO - Created Ejb(deployment-id=ThirdSLSBean, ejb-name=ThirdSLSBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=SecondStatelessInterceptedBean, ejb-name=SecondStatelessInterceptedBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=FullyInterceptedBean, ejb-name=FullyInterceptedBean, container=Default Stateless Container)
+INFO - Created Ejb(deployment-id=MethodLevelInterceptorOnlySLSBean, ejb-name=MethodLevelInterceptorOnlySLSBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=ThirdSLSBean, ejb-name=ThirdSLSBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=SecondStatelessInterceptedBean, ejb-name=SecondStatelessInterceptedBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=FullyInterceptedBean, ejb-name=FullyInterceptedBean, container=Default Stateless Container)
+INFO - Started Ejb(deployment-id=MethodLevelInterceptorOnlySLSBean, ejb-name=MethodLevelInterceptorOnlySLSBean, container=Default Stateless Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/interceptors/classpath.ear)
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.564 sec
+Running org.superbiz.interceptors.MethodLevelInterceptorOnlyTest
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 sec
+Running org.superbiz.interceptors.SecondStatelessInterceptedTest
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec
+Running org.superbiz.interceptors.ThirdSLSBeanTest
+Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 sec
+
+Results :
+
+Tests run: 6, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    

Propchange: tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/interceptors.adoc
------------------------------------------------------------------------------
    svn:executable = *

Added: tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/javamail.adoc
URL: http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/javamail.adoc?rev=1772522&view=auto
==============================================================================
--- tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/javamail.adoc (added)
+++ tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/javamail.adoc Sun Dec  4 11:01:40 2016
@@ -0,0 +1,201 @@
+= Javamail API
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example javamail can be browsed at https://github.com/apache/tomee/tree/master/examples/javamail
+
+
+This is just a simple example to demonstrate a very basic usage of the API. It should be enough to get you started using the java mail packages.
+
+= The Code
+
+==  A simple REST service using the Javamail API
+
+Here we see a very simple RESTful endpoint that can be called with a message to send by Email. It would not be hard to modify the application to provide
+more useful configuration options. As is, this will not send anything, but if you change the parameters to match your mail server then you'll see the message being sent.
+You can find much more detailed information on the link:https://java.net/projects/javamail/pages/Home#Samples[Javamail API here]
+
+
+[source,java]
+----
+package org.superbiz.rest;
+
+import javax.mail.Authenticator;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.PasswordAuthentication;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import java.util.Date;
+import java.util.Properties;
+
+@Path("/email")
+public class EmailService {
+
+    @POST
+    public String lowerCase(final String message) {
+
+        try {
+
+            //Create some properties and get the default Session
+            final Properties props = new Properties();
+            props.put("mail.smtp.host", "your.mailserver.host");
+            props.put("mail.debug", "true");
+
+            final Session session = Session.getInstance(props, new Authenticator() {
+                @Override
+                protected PasswordAuthentication getPasswordAuthentication() {
+                    return new PasswordAuthentication("MyUsername", "MyPassword");
+                }
+            });
+
+            //Set this just to see some internal logging
+            session.setDebug(true);
+
+            //Create a message
+            final MimeMessage msg = new MimeMessage(session);
+            msg.setFrom(new InternetAddress("your@email.address"));
+            final InternetAddress[] address = {new InternetAddress("general@tomitribe.com")};
+            msg.setRecipients(Message.RecipientType.TO, address);
+            msg.setSubject("JavaMail API test");
+            msg.setSentDate(new Date());
+            msg.setText(message, "UTF-8");
+
+
+            Transport.send(msg);
+        } catch (MessagingException e) {
+            return "Failed to send message: " + e.getMessage();
+        }
+
+        return "Sent";
+    }
+}
+----
+
+
+=  Testing
+
+==  Test for the JAXRS service
+
+The test uses the OpenEJB ApplicationComposer to make it trivial.
+
+The idea is first to activate the jaxrs services. This is done using @EnableServices annotation.
+
+Then we create on the fly the application simply returning an object representing the web.xml. Here we simply
+use it to define the context root but you can use it to define your REST Application too. And to complete the
+application definition we add @Classes annotation to define the set of classes to use in this app.
+
+Finally to test it we use cxf client API to call the REST service post() method.
+
+
+[source,java]
+----
+package org.superbiz.rest;
+
+import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.openejb.jee.WebApp;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.testing.Classes;
+import org.apache.openejb.testing.EnableServices;
+import org.apache.openejb.testing.Module;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.IOException;
+
+import static org.junit.Assert.assertEquals;
+
+@EnableServices(value = "jaxrs")
+@RunWith(ApplicationComposer.class)
+public class EmailServiceTest {
+
+    @Module
+    @Classes(EmailService.class)
+    public WebApp app() {
+        return new WebApp().contextRoot("test");
+    }
+
+    @Test
+    public void post() throws IOException {
+        final String message = WebClient.create("http://localhost:4204").path("/test/email/").post("Hello Tomitribe", String.class);
+        assertEquals("Failed to send message: Unknown SMTP host: your.mailserver.host", message);
+    }
+}
+----
+
+
+= Running
+
+Running the example is fairly simple. In the "javamail-api" directory run:
+
+    $ mvn clean install
+
+Which should create output like the following.
+
+    INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt to create one for the beans deployed.
+    INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+    INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+    INFO - Creating TransactionManager(id=Default Transaction Manager)
+    INFO - Creating SecurityService(id=Default Security Service)
+    INFO - Initializing network services
+    INFO - Creating ServerService(id=cxf-rs)
+    INFO - Creating ServerService(id=httpejbd)
+    INFO - Created ServicePool 'httpejbd' with (10) core threads, limited to (200) threads with a queue of (9)
+    INFO - Initializing network services
+    INFO -   ** Bound Services **
+    INFO -   NAME                 IP              PORT
+    INFO -   httpejbd             127.0.0.1       4204
+    INFO - -------
+    INFO - Ready!
+    INFO - Configuring enterprise application: D:\github\tomee\examples\javamail\EmailServiceTest
+    INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+    INFO - Auto-creating a container for bean org.superbiz.rest.EmailServiceTest: Container(type=MANAGED, id=Default Managed Container)
+    INFO - Creating Container(id=Default Managed Container)
+    INFO - Using directory D:\windows\tmp for stateful session passivation
+    INFO - Configuring Service(id=comp/DefaultManagedExecutorService, type=Resource, provider-id=Default Executor Service)
+    INFO - Auto-creating a Resource with id 'comp/DefaultManagedExecutorService' of type 'javax.enterprise.concurrent.ManagedExecutorService for 'test'.
+    INFO - Configuring Service(id=comp/DefaultManagedScheduledExecutorService, type=Resource, provider-id=Default Scheduled Executor Service)
+    INFO - Auto-creating a Resource with id 'comp/DefaultManagedScheduledExecutorService' of type 'javax.enterprise.concurrent.ManagedScheduledExecutorService for 'test'.
+    INFO - Configuring Service(id=comp/DefaultManagedThreadFactory, type=Resource, provider-id=Default Managed Thread Factory)
+    INFO - Auto-creating a Resource with id 'comp/DefaultManagedThreadFactory' of type 'javax.enterprise.concurrent.ManagedThreadFactory for 'test'.
+    INFO - Enterprise application "D:\github\tomee\examples\javamail\EmailServiceTest" loaded.
+    INFO - Creating dedicated application classloader for EmailServiceTest
+    INFO - Assembling app: D:\github\tomee\examples\javamail\EmailServiceTest
+    INFO - Using providers:
+    INFO -      org.apache.johnzon.jaxrs.JohnzonProvider@2687f956
+    INFO -      org.apache.cxf.jaxrs.provider.JAXBElementProvider@1ded7b14
+    INFO -      org.apache.johnzon.jaxrs.JsrProvider@29be7749
+    INFO -      org.apache.johnzon.jaxrs.WadlDocumentMessageBodyWriter@5f84abe8
+    INFO -      org.apache.openejb.server.cxf.rs.EJBAccessExceptionMapper@4650a407
+    INFO -      org.apache.cxf.jaxrs.validation.ValidationExceptionMapper@30135202
+    INFO - REST Application: http://127.0.0.1:4204/test/       -> org.apache.openejb.server.rest.InternalApplication
+    INFO -      Service URI: http://127.0.0.1:4204/test/email  -> Pojo org.superbiz.rest.EmailService
+    INFO -              POST http://127.0.0.1:4204/test/email/ ->      String lowerCase(String)
+    INFO - Deployed Application(path=D:\github\tomee\examples\javamail\EmailServiceTest)
+    DEBUG: JavaMail version 1.4ea
+    DEBUG: java.io.FileNotFoundException: D:\java\jdk8\jre\lib\javamail.providers (The system cannot find the file specified)
+    DEBUG: !anyLoaded
+    DEBUG: not loading resource: /META-INF/javamail.providers
+    DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
+    DEBUG: Tables of loaded providers
+    DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]}
+    DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]}
+    DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
+    DEBUG: !anyLoaded
+    DEBUG: not loading resource: /META-INF/javamail.address.map
+    DEBUG: java.io.FileNotFoundException: D:\java\jdk8\jre\lib\javamail.address.map (The system cannot find the file specified)
+    DEBUG: setDebug: JavaMail version 1.4ea
+    DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
+    DEBUG SMTP: useEhlo true, useAuth false
+    DEBUG SMTP: trying to connect to host "your.mailserver.host", port 25, isSSL false
+    INFO - Undeploying app: D:\github\tomee\examples\javamail\EmailServiceTest
+    INFO - Stopping network services
+    INFO - Stopping server services
+
+

Propchange: tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/javamail.adoc
------------------------------------------------------------------------------
    svn:executable = *

Added: tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/jpa-eclipselink.adoc
URL: http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/jpa-eclipselink.adoc?rev=1772522&view=auto
==============================================================================
--- tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/jpa-eclipselink.adoc (added)
+++ tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/jpa-eclipselink.adoc Sun Dec  4 11:01:40 2016
@@ -0,0 +1,239 @@
+= JPA Eclipselink
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example jpa-eclipselink can be browsed at https://github.com/apache/tomee/tree/master/examples/jpa-eclipselink
+
+
+This example shows how to configure `persistence.xml` to work with Eclipselink. It uses an `@Entity` class and a `@Stateful` bean to add and delete entities from a database.
+
+==  Creating the JPA Entity
+
+The entity itself is simply a pojo annotated with `@Entity`.  We create one pojo called `Movie` which we can use to hold movie records.
+
+
+[source,java]
+----
+package org.superbiz.eclipselink;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity
+public class Movie {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private long id;
+
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+
+}
+----
+
+
+==  Database Operations
+
+This is the bean responsible for database operations; it allows us to persist or delete entities.
+For more information we recommend you to see link:http://tomee.apache.org/examples-trunk/injection-of-entitymanager/README.html[injection-of-entitymanager]
+
+
+
+[source,java]
+----
+package org.superbiz.eclipselink;
+
+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();
+    }
+}
+----
+
+
+==  Persistence.xml with EclipseLink configuration
+
+This operation is too easy, just set the `provider` to `org.eclipse.persistence.jpa.PersistenceProvider` and add additional properties to the persistence unit. 
+The example has followed a strategy that allows the creation of tables in a HSQL database.
+For a complete list of persistence unit properties see link:http://www.eclipse.org/eclipselink/api/2.4/org/eclipse/persistence/config/PersistenceUnitProperties.html[here]
+
+
+[source,xml]
+----
+<persistence version="1.0"
+             xmlns="http://java.sun.com/xml/ns/persistence"
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
+  <persistence-unit name="movie-unit">
+    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <properties>
+      <property name="eclipselink.target-database" value="org.eclipse.persistence.platform.database.HSQLPlatform"/>
+      <property name="eclipselink.ddl-generation" value="create-tables"/>
+      <property name="eclipselink.ddl-generation.output-mode" value="database"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+    
+
+==  MoviesTest
+
+Testing JPA is quite easy, we can simply use the `EJBContainer` API to create a container in our test case.
+
+
+[source,java]
+----
+package org.superbiz.eclipselink;
+
+import junit.framework.TestCase;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import java.util.List;
+import java.util.Properties;
+
+/**
+ * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+public class MoviesTest extends TestCase {
+
+    public void test() throws Exception {
+        Properties p = new Properties();
+        p.put("movieDatabase", "new://Resource?type=DataSource");
+        p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+        p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+        final Context context = EJBContainer.createEJBContainer(p).getContext();
+
+        Movies movies = (Movies) context.lookup("java:global/jpa-eclipselink/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());
+    }
+}
+----
+
+
+=  Running
+
+When we run our test case we should see output similar to the following.    
+
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.eclipselink.MoviesTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/jpa-eclipselink
+INFO - openejb.base = /Users/dblevins/examples/jpa-eclipselink
+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/jpa-eclipselink/target/classes
+INFO - Beginning load: /Users/dblevins/examples/jpa-eclipselink/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/jpa-eclipselink
+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.eclipselink.MoviesTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit, provider=org.eclipse.persistence.jpa.PersistenceProvider)
+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/jpa-eclipselink" loaded.
+INFO - Assembling app: /Users/dblevins/examples/jpa-eclipselink
+INFO - PersistenceUnit(name=movie-unit, provider=org.eclipse.persistence.jpa.PersistenceProvider) - provider time 511ms
+INFO - Jndi(name="java:global/jpa-eclipselink/Movies!org.superbiz.eclipselink.Movies")
+INFO - Jndi(name="java:global/jpa-eclipselink/Movies")
+INFO - Jndi(name="java:global/EjbModule225280863/org.superbiz.eclipselink.MoviesTest!org.superbiz.eclipselink.MoviesTest")
+INFO - Jndi(name="java:global/EjbModule225280863/org.superbiz.eclipselink.MoviesTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Created Ejb(deployment-id=org.superbiz.eclipselink.MoviesTest, ejb-name=org.superbiz.eclipselink.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.eclipselink.MoviesTest, ejb-name=org.superbiz.eclipselink.MoviesTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/jpa-eclipselink)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.188 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    

Propchange: tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/jpa-eclipselink.adoc
------------------------------------------------------------------------------
    svn:executable = *

Added: tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/jpa-enumerated.adoc
URL: http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/jpa-enumerated.adoc?rev=1772522&view=auto
==============================================================================
--- tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/jpa-enumerated.adoc (added)
+++ tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/jpa-enumerated.adoc Sun Dec  4 11:01:40 2016
@@ -0,0 +1,295 @@
+= JPA and Enums via @Enumerated
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example jpa-enumerated can be browsed at https://github.com/apache/tomee/tree/master/examples/jpa-enumerated
+
+
+It can sometimes be desirable to have a Java `enum` type to represent a particular column in a database. JPA supports converting database data to and from Java `enum` types via the `@javax.persistence.Enumerated` annotation.
+
+This example will show basic `@Enumerated` usage in a field of an `@Entity` as well as `enum`s as the parameter of a `Query`.  We'll also see that the actual database representation can be effectively `String` or `int`.
+
+==  Enum
+
+For our example we will leverage the familiar `Movie` entity and add a new field to represent the MPAA.org rating of the movie.  This is defined via a simple `enum` that requires no JPA specific annotations.
+
+
+[source,java]
+----
+public enum Rating {
+    UNRATED,
+    G,
+    PG,
+    PG13,
+    R,
+    NC17
+}
+----
+
+
+==  @Enumerated
+
+In our `Movie` entity, we add a `rating` field of the enum type `Rating` and annotate it with `@Enumerated(EnumType.STRING)` to declare that its value should be converted from what is effectively a `String` in the database to the `Rating` type.
+
+
+[source,java]
+----
+@Entity
+public class Movie {
+
+    @Id
+    @GeneratedValue
+    private int id;
+    private String director;
+    private String title;
+    private int year;
+
+    @Enumerated(EnumType.STRING)
+    private Rating rating;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year, Rating rating) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+        this.rating = rating;
+    }
+
+    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;
+    }
+
+    public Rating getRating() {
+        return rating;
+    }
+
+    public void setRating(Rating rating) {
+        this.rating = rating;
+    }
+}
+----
+
+
+The above is enough and we are effectively done.  For the sake of completeness we'll show a sample `Query`
+
+==  Enum in JPQL Query
+
+Note the `findByRating` method which creates a `Query` with a `rating` named parameter.  The key thing to notice is that the `rating` enum instance itself is passed into the
+ `query.setParameter` method, **not** `rating.name()` or `rating.ordinal()`.
+
+Regardless if you use `EnumType.STRING` or `EnumType.ORDINAL`, you still always pass the enum itself in calls to `query.setParameter`.
+
+
+[source,java]
+----
+@Stateful
+public class Movies {
+
+    @PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.EXTENDED)
+    private EntityManager entityManager;
+
+    public void addMovie(Movie movie) {
+        entityManager.persist(movie);
+    }
+
+    public void deleteMovie(Movie movie) {
+        entityManager.remove(movie);
+    }
+
+    public List<Movie> findByRating(Rating rating) {
+        final Query query = entityManager.createQuery("SELECT m FROM Movie as m WHERE m.rating = :rating");
+        query.setParameter("rating", rating);
+        return query.getResultList();
+    }
+
+    public List<Movie> getMovies() throws Exception {
+        Query query = entityManager.createQuery("SELECT m from Movie as m");
+        return query.getResultList();
+    }
+
+}
+----
+
+
+==  EnumType.STRING vs EnumType.ORDINAL
+
+It is a matter of style how you would like your `enum` data represented in the database.  Either `name()` or `ordinal()` are supported:
+
+ - `@Enumerated(EnumType.STRING) Rating rating` the value of `rating.name()` is written and read from the corresponding database column; e.g. `G`, `PG`, `PG13`
+ - `@Enumerated(EnumType.ORDINAL) Rating rating` the value of `rating.ordinal()` is written and read from the corresponding database column; e.g. `0`, `1`, `2`
+
+The default is `EnumType.ORDINAL`
+
+There are advantages and disadvantages to each.
+
+===  Disadvantage of EnumType.ORDINAL
+
+A disadvantage of `EnumType.ORDINAL` is the effect of time and the desire to keep `enums` in a logical order.  With `EnumType.ORDINAL` any new enum elements must be added to the
+**end** of the list or you will accidentally change the meaning of all your records.
+
+Let's use our `Rating` enum and see how it would have had to evolve over time to keep up with changes in the MPAA.org ratings system.
+
+**1980**
+
+
+[source,java]
+----
+public enum Rating {
+    G,
+    PG,
+    R,
+    UNRATED
+}
+----
+
+
+**1984** PG-13 is added
+
+
+[source,java]
+----
+public enum Rating {
+    G,
+    PG,
+    R,
+    UNRATED,
+    PG13
+}
+----
+
+
+**1990** NC-17 is added
+
+
+[source,java]
+----
+public enum Rating {
+    G,
+    PG,
+    R,
+    UNRATED,
+    PG13,
+    NC17
+}
+----
+
+
+If `EnumType.STRING` was used, then the enum could be reordered at anytime and would instead look as we have defined it originally with ratings starting at `G` and increasing in severity to `NC17` and eventually `UNRATED`.  With `EnumType.ORDINAL` the logical ordering would not have withstood the test of time as new values were added.
+
+If the order of the enum values is significant to your code, avoid `EnumType.ORDINAL`
+
+==  Unit Testing the JPA @Enumerated
+
+
+[source,java]
+----
+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");
+
+        EJBContainer container = EJBContainer.createEJBContainer(p);
+        final Context context = container.getContext();
+
+        final Movies movies = (Movies) context.lookup("java:global/jpa-scratch/Movies");
+
+        movies.addMovie(new Movie("James Frawley", "The Muppet Movie", 1979, Rating.G));
+        movies.addMovie(new Movie("Jim Henson", "The Great Muppet Caper", 1981, Rating.G));
+        movies.addMovie(new Movie("Frank Oz", "The Muppets Take Manhattan", 1984, Rating.G));
+        movies.addMovie(new Movie("James Bobin", "The Muppets", 2011, Rating.PG));
+
+        assertEquals("List.size()", 4, movies.getMovies().size());
+
+        assertEquals("List.size()", 3, movies.findByRating(Rating.G).size());
+
+        assertEquals("List.size()", 1, movies.findByRating(Rating.PG).size());
+
+        assertEquals("List.size()", 0, movies.findByRating(Rating.R).size());
+
+        container.close();
+    }
+}
+----
+
+
+=  Running
+
+To run the example via maven:
+
+    cd jpa-enumerated
+    mvn clean install
+
+Which will generate output similar to the following:
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.jpa.enums.MoviesTest
+Apache OpenEJB 4.0.0-beta-2    build: 20120115-08:26
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/openejb/examples/jpa-enumerated
+INFO - openejb.base = /Users/dblevins/openejb/examples/jpa-enumerated
+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/openejb/examples/jpa-enumerated/target/classes
+INFO - Beginning load: /Users/dblevins/openejb/examples/jpa-enumerated/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/openejb/examples/jpa-enumerated
+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.jpa.enums.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/openejb/examples/jpa-enumerated" loaded.
+INFO - Assembling app: /Users/dblevins/openejb/examples/jpa-enumerated
+INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 406ms
+INFO - Jndi(name="java:global/jpa-enumerated/Movies!org.superbiz.jpa.enums.Movies")
+INFO - Jndi(name="java:global/jpa-enumerated/Movies")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Deployed Application(path=/Users/dblevins/openejb/examples/jpa-enumerated)
+INFO - Undeploying app: /Users/dblevins/openejb/examples/jpa-enumerated
+INFO - Closing DataSource: movieDatabase
+INFO - Closing DataSource: movieDatabaseNonJta
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.831 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+

Propchange: tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/jpa-enumerated.adoc
------------------------------------------------------------------------------
    svn:executable = *

Added: tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/jpa-hibernate.adoc
URL: http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/jpa-hibernate.adoc?rev=1772522&view=auto
==============================================================================
--- tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/jpa-hibernate.adoc (added)
+++ tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/jpa-hibernate.adoc Sun Dec  4 11:01:40 2016
@@ -0,0 +1,224 @@
+= JPA Hibernate
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example jpa-hibernate can be browsed at https://github.com/apache/tomee/tree/master/examples/jpa-hibernate
+
+
+*Help us document this example! Click the blue pencil icon in the upper right to edit this page.*
+
+==  Movie
+
+
+[source,java]
+----
+package org.superbiz.injection.h3jpa;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity
+public class Movie {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private long id;
+
+    private String director;
+    private String title;
+    private int year;
+
+    public Movie() {
+    }
+
+    public Movie(String director, String title, int year) {
+        this.director = director;
+        this.title = title;
+        this.year = year;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public int getYear() {
+        return year;
+    }
+
+    public void setYear(int year) {
+        this.year = year;
+    }
+
+}
+----
+
+
+==  Movies
+
+
+[source,java]
+----
+package org.superbiz.injection.h3jpa;
+
+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();
+    }
+}
+----
+
+
+==  persistence.xml
+
+
+[source,xml]
+----
+<persistence version="1.0"
+             xmlns="http://java.sun.com/xml/ns/persistence"
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
+  <persistence-unit name="movie-unit">
+    <provider>org.hibernate.ejb.HibernatePersistence</provider>
+    <jta-data-source>movieDatabase</jta-data-source>
+    <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+    <properties>
+      <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
+      <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
+    </properties>
+  </persistence-unit>
+</persistence>
+----
+
+    
+
+==  MoviesTest
+
+
+[source,java]
+----
+package org.superbiz.injection.h3jpa;
+
+import junit.framework.TestCase;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.Context;
+import java.util.List;
+import java.util.Properties;
+
+/**
+ * @version $Revision: 607077 $ $Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $
+ */
+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/jpa-hibernate/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());
+    }
+}
+----
+
+
+=  Running
+
+    
+
+[source]
+----
+-------------------------------------------------------
+ T E S T S
+-------------------------------------------------------
+Running org.superbiz.injection.h3jpa.MoviesTest
+Apache OpenEJB 4.0.0-beta-1    build: 20111002-04:06
+http://tomee.apache.org/
+INFO - openejb.home = /Users/dblevins/examples/jpa-hibernate
+INFO - openejb.base = /Users/dblevins/examples/jpa-hibernate
+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/jpa-hibernate/target/classes
+INFO - Beginning load: /Users/dblevins/examples/jpa-hibernate/target/classes
+INFO - Configuring enterprise application: /Users/dblevins/examples/jpa-hibernate
+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.h3jpa.MoviesTest: Container(type=MANAGED, id=Default Managed Container)
+INFO - Configuring PersistenceUnit(name=movie-unit, provider=org.hibernate.ejb.HibernatePersistence)
+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/jpa-hibernate" loaded.
+INFO - Assembling app: /Users/dblevins/examples/jpa-hibernate
+INFO - PersistenceUnit(name=movie-unit, provider=org.hibernate.ejb.HibernatePersistence) - provider time 631ms
+INFO - Jndi(name="java:global/jpa-hibernate/Movies!org.superbiz.injection.h3jpa.Movies")
+INFO - Jndi(name="java:global/jpa-hibernate/Movies")
+INFO - Jndi(name="java:global/EjbModule1235930463/org.superbiz.injection.h3jpa.MoviesTest!org.superbiz.injection.h3jpa.MoviesTest")
+INFO - Jndi(name="java:global/EjbModule1235930463/org.superbiz.injection.h3jpa.MoviesTest")
+INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+INFO - Created Ejb(deployment-id=org.superbiz.injection.h3jpa.MoviesTest, ejb-name=org.superbiz.injection.h3jpa.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.h3jpa.MoviesTest, ejb-name=org.superbiz.injection.h3jpa.MoviesTest, container=Default Managed Container)
+INFO - Deployed Application(path=/Users/dblevins/examples/jpa-hibernate)
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.22 sec
+
+Results :
+
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
+----
+
+    

Propchange: tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/jpa-hibernate.adoc
------------------------------------------------------------------------------
    svn:executable = *

Added: tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/jsf-cdi-and-ejb.adoc
URL: http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/jsf-cdi-and-ejb.adoc?rev=1772522&view=auto
==============================================================================
--- tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/jsf-cdi-and-ejb.adoc (added)
+++ tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/jsf-cdi-and-ejb.adoc Sun Dec  4 11:01:40 2016
@@ -0,0 +1,273 @@
+= JSF-CDI-EJB
+:jbake-date: 2016-09-06
+:jbake-type: page
+:jbake-tomeepdf:
+:jbake-status: published
+
+Example jsf-cdi-and-ejb can be browsed at https://github.com/apache/tomee/tree/master/examples/jsf-cdi-and-ejb
+
+
+The simple application contains a CDI managed bean `CalculatorBean`, which uses the `Calculator` EJB to add two numbers
+and display the results to the user. The EJB is injected in the managed bean using @Inject annotation.
+
+You could run this in the latest Apache TomEE link:https://repository.apache.org/content/repositories/snapshots/org/apache/openejb/apache-tomee/[snapshot]
+
+The complete source code is below but lets break down to look at some smaller snippets and see  how it works.
+
+
+A little note on the setup:
+
+As for the libraries, myfaces-api and myfaces-impl are provided in tomee/lib and hence they should not be a part of the
+war. In maven terms, they would be with scope 'provided'
+
+Also note that we use servlet 2.5 declaration in web.xml
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns="http://java.sun.com/xml/ns/javaee"
+  xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+  version="2.5">
+
+And we use 2.0 version of faces-config
+
+ <faces-config 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-facesconfig_2_0.xsd"
+               version="2.0">
+
+To make this a cdi-aware-archive (i.e bean archive) an empty beans.xml is added in WEB-INF
+
+       <?xml version="1.0" encoding="UTF-8"?>
+
+       <beans 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/beans_1_0.xsd">
+       </beans>
+
+We'll first declare the FacesServlet in the web.xml
+
+      <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+      </servlet>
+
+FacesServlet acts as the master controller.
+
+We'll then create the calculator.xhtml file.
+
+           <h:outputText value='Enter first number'/>
+           <h:inputText value='#{calculatorBean.x}'/>
+           <h:outputText value='Enter second number'/>
+           <h:inputText value='#{calculatorBean.y}'/>
+           <h:commandButton action="#{calculatorBean.add}" value="Add"/>
+
+Notice how we've used the bean here. By default, the bean name would be the simple name of the bean
+class with the first letter in lower case.
+
+We've annotated the `CalculatorBean` with `@RequestScoped`.
+So when a request comes in, the bean is instantiated and placed in the request scope.
+
+<h:inputText value='#{calculatorBean.x}'/>
+
+Here, getX() method of calculatorBean is invoked and the resulting value is displayed.
+x being a Double, we rightly should see 0.0 displayed.
+
+When you change the value and submit the form, these entered values are bound using the setters
+in the bean and then the commandButton-action method is invoked.
+
+In this case, CalculatorBean#add() is invoked.
+
+Calculator#add() delegates the work to the ejb, gets the result, stores it
+and then returns what view is to be rendered.
+
+The return value "success" is checked up in faces-config navigation-rules
+and the respective page is rendered.
+
+In our case, 'result.xhtml' page is rendered where
+use EL and display the result from the request-scoped `calculatorBean`.
+
+= Source Code
+
+==  CalculatorBean
+
+
+[source,java]
+----
+import javax.enterprise.context.RequestScoped;
+import javax.inject.Named;
+import javax.inject.Inject;
+
+@RequestScoped
+@Named
+public class CalculatorBean {
+    @Inject
+    Calculator calculator;
+    private double x;
+    private double y;
+    private double result;
+
+    public double getX() {
+        return x;
+    }
+
+    public void setX(double x) {
+        this.x = x;
+    }
+
+    public double getY() {
+        return y;
+    }
+
+    public void setY(double y) {
+        this.y = y;
+    }
+
+    public double getResult() {
+        return result;
+    }
+
+    public void setResult(double result) {
+        this.result = result;
+    }
+
+    public String add() {
+        result = calculator.add(x, y);
+        return "success";
+    }
+}
+----
+
+
+==  Calculator
+
+
+[source,java]
+----
+package org.superbiz.jsf;
+
+import javax.ejb.Stateless;
+
+@Stateless
+public class Calculator{
+
+    public double add(double x, double y) {
+        return x + y;
+    }
+}
+----
+
+
+
+= web.xml
+
+<?xml version="1.0"?>
+
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://java.sun.com/xml/ns/javaee"
+         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+         version="2.5">
+
+  <description>MyProject web.xml</description>
+
+  <!-- Faces Servlet -->
+  <servlet>
+
+[source,xml]
+----
+<servlet-name>Faces Servlet</servlet-name>
+<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+<load-on-startup>1</load-on-startup>
+  </servlet>
+
+  <!-- Faces Servlet Mapping -->
+  <servlet-mapping>
+<servlet-name>Faces Servlet</servlet-name>
+<url-pattern>*.jsf</url-pattern>
+  </servlet-mapping>
+
+  <!-- Welcome files -->
+  <welcome-file-list>
+<welcome-file>index.jsp</welcome-file>
+<welcome-file>index.html</welcome-file>
+  </welcome-file-list>
+
+</web-app>
+
+
+#Calculator.xhtml
+
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+  xmlns:f="http://java.sun.com/jsf/core"
+  xmlns:h="http://java.sun.com/jsf/html">
+
+
+<h:body bgcolor="white">
+<f:view>
+    <h:form>
+        <h:panelGrid columns="2">
+            <h:outputText value='Enter first number'/>
+            <h:inputText value='#{calculatorBean.x}'/>
+            <h:outputText value='Enter second number'/>
+            <h:inputText value='#{calculatorBean.y}'/>
+            <h:commandButton action="#{calculatorBean.add}" value="Add"/>
+        </h:panelGrid>
+    </h:form>
+</f:view>
+</h:body>
+</html>
+
+
+ #Result.xhtml
+
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+  xmlns:f="http://java.sun.com/jsf/core"
+  xmlns:h="http://java.sun.com/jsf/html">
+
+<h:body>
+<f:view>
+<h:form id="mainForm">
+    <h2><h:outputText value="Result of adding #{calculatorBean.x} and #{calculatorBean.y} is #{calculatorBean.result }"/></h2>
+    <h:commandLink action="back">
+        <h:outputText value="Home"/>
+    </h:commandLink>
+</h:form>
+</f:view>
+</h:body>
+</html>
+
+ #faces-config.xml
+
+ <?xml version="1.0"?>
+ <faces-config 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-facesconfig_2_0.xsd"
+           version="2.0">
+
+   <navigation-rule>
+ <from-view-id>/calculator.xhtml</from-view-id>
+ <navigation-case>
+   <from-outcome>success</from-outcome>
+   <to-view-id>/result.xhtml</to-view-id>
+ </navigation-case>
+   </navigation-rule>
+
+   <navigation-rule>
+ <from-view-id>/result.xhtml</from-view-id>
+ <navigation-case>
+   <from-outcome>back</from-outcome>
+   <to-view-id>/calculator.xhtml</to-view-id>
+ </navigation-case>
+   </navigation-rule>
+ </faces-config>
+

Propchange: tomee/site/trunk/generators/site-tomee-ng/src/main/jbake/content/examples/jsf-cdi-and-ejb.adoc
------------------------------------------------------------------------------
    svn:executable = *