http://git-wip-us.apache.org/repos/asf/tomee-site-generator/blob/972cc356/examples.cache
----------------------------------------------------------------------
diff --git a/examples.cache b/examples.cache
new file mode 100755
index 0000000..ba5ccce
--- /dev/null
+++ b/examples.cache
@@ -0,0 +1,1653 @@
+{
+  "all":{
+    "adapters":[
+      {
+        "name":"multiple-arquillian-adapters",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/multiple-arquillian-adapters";
+      }
+    ],
+    "alternate":[
+      {
+        "name":"alternate-descriptors",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/alternate-descriptors";
+      }
+    ],
+    "alternative":[
+      {
+        "name":"cdi-alternative-and-stereotypes",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/cdi-alternative-and-stereotypes";
+      }
+    ],
+    "applet":[
+      {
+        "name":"applet",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/applet";
+      }
+    ],
+    "applicationcomposer":[
+      {
+        "name":"applicationcomposer-jaxws-cdi",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/applicationcomposer-jaxws-cdi";
+      },
+      {
+        "name":"rest-applicationcomposer",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/rest-applicationcomposer";
+      },
+      {
+        "name":"application-composer",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/application-composer";
+      },
+      {
+        "name":"rest-applicationcomposer-mockito",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/rest-applicationcomposer-mockito";
+      }
+    ],
+    "applicationexception":[
+      {
+        "name":"applicationexception",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/applicationexception";
+      }
+    ],
+    "arquillian":[
+      {
+        "name":"arquillian-jpa",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/arquillian-jpa";
+      },
+      {
+        "name":"multiple-tomee-arquillian",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/multiple-tomee-arquillian";
+      },
+      {
+        "name":"multiple-arquillian-adapters",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/multiple-arquillian-adapters";
+      }
+    ],
+    "async":[
+      {
+        "name":"async-postconstruct",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/async-postconstruct";
+      },
+      {
+        "name":"async-methods",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/async-methods";
+      }
+    ],
+    "attachments":[
+      {
+        "name":"webservice-attachments",
+        "readme":"Title: Webservice Attachments\n\n*Help us document this 
example! Click the blue pencil icon in the upper right to edit this 
page.*\n\n## AttachmentImpl\n\n    package org.superbiz.attachment;\n    \n    
import javax.activation.DataHandler;\n    import javax.activation.DataSource;\n 
   import javax.ejb.Stateless;\n    import javax.jws.WebService;\n    import 
javax.xml.ws.BindingType;\n    import javax.xml.ws.soap.SOAPBinding;\n    
import java.io.IOException;\n    import java.io.InputStream;\n    \n    /**\n   
  * This is an EJB 3 style pojo stateless session bean\n     * Every stateless 
session bean implementation must be annotated\n     * using the annotation 
@Stateless\n     * This EJB has a single interface: {@link AttachmentWs} a 
webservice interface.\n     */\n    @Stateless\n    @WebService(\n            
portName = \"AttachmentPort\",\n            serviceName = 
\"AttachmentWsService\",\n            targetNamespace = 
\"http://superbiz.org/wsdl\",\n            e
 ndpointInterface = \"org.superbiz.attachment.AttachmentWs\")\n    
@BindingType(value = SOAPBinding.SOAP12HTTP_MTOM_BINDING)\n    public class 
AttachmentImpl implements AttachmentWs {\n    \n        public String 
stringFromBytes(byte[] data) {\n            return new String(data);\n        
}\n    \n        public String stringFromDataSource(DataSource source) {\n    
\n            try {\n                InputStream inStr = 
source.getInputStream();\n                int size = inStr.available();\n       
         byte[] data = new byte[size];\n                inStr.read(data);\n     
           inStr.close();\n                return new String(data);\n           
 } catch (IOException e) {\n                e.printStackTrace();\n            
}\n            return \"\";\n        }\n    \n        public String 
stringFromDataHandler(DataHandler handler) {\n    \n            try {\n         
       return (String) handler.getContent();\n            } catch (IOException 
e) {\n                e.pri
 ntStackTrace();\n            }\n            return \"\";\n        }\n    
}\n\n## AttachmentWs\n\n    package org.superbiz.attachment;\n    \n    import 
javax.activation.DataHandler;\n    import javax.jws.WebService;\n    \n    
/**\n     * This is an EJB 3 webservice interface to send attachments 
throughout SAOP.\n     */\n    @WebService(targetNamespace = 
\"http://superbiz.org/wsdl\";)\n    public interface AttachmentWs {\n    \n      
  public String stringFromBytes(byte[] data);\n    \n        // Not working at 
the moment with SUN saaj provider and CXF\n        //public String 
stringFromDataSource(DataSource source);\n    \n        public String 
stringFromDataHandler(DataHandler handler);\n    }\n\n## ejb-jar.xml\n\n    
<ejb-jar/>\n\n## AttachmentTest\n\n    package org.superbiz.attachment;\n    \n 
   import junit.framework.TestCase;\n    \n    import 
javax.activation.DataHandler;\n    import javax.activation.DataSource;\n    
import javax.mail.util.ByteArrayDataSource;\n    import j
 avax.naming.Context;\n    import javax.naming.InitialContext;\n    import 
javax.xml.namespace.QName;\n    import javax.xml.ws.BindingProvider;\n    
import javax.xml.ws.Service;\n    import javax.xml.ws.soap.SOAPBinding;\n    
import java.net.URL;\n    import java.util.Properties;\n    \n    public class 
AttachmentTest extends TestCase {\n    \n        //START SNIPPET: setup\t\n     
   private InitialContext initialContext;\n    \n        protected void setUp() 
throws Exception {\n    \n            Properties properties = new 
Properties();\n            
properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, 
\"org.apache.openejb.core.LocalInitialContextFactory\");\n            
properties.setProperty(\"openejb.embedded.remotable\", \"true\");\n    \n       
     initialContext = new InitialContext(properties);\n        }\n        //END 
SNIPPET: setup    \n    \n        /**\n         * Create a webservice client 
using wsdl url\n         *\n         * @throws Exception\n         */\n      
   //START SNIPPET: webservice\n        public void 
testAttachmentViaWsInterface() throws Exception {\n            Service service 
= Service.create(\n                    new 
URL(\"http://127.0.0.1:4204/AttachmentImpl?wsdl\";),\n                    new 
QName(\"http://superbiz.org/wsdl\";, \"AttachmentWsService\"));\n            
assertNotNull(service);\n    \n            AttachmentWs ws = 
service.getPort(AttachmentWs.class);\n    \n            // retrieve the 
SOAPBinding\n            SOAPBinding binding = (SOAPBinding) ((BindingProvider) 
ws).getBinding();\n            binding.setMTOMEnabled(true);\n    \n            
String request = \"tszte...@gmail.com\";\n    \n            // Byte array\n     
       String response = ws.stringFromBytes(request.getBytes());\n            
assertEquals(request, response);\n    \n            // Data Source\n            
DataSource source = new ByteArrayDataSource(request.getBytes(), \"text/plain; 
charset=UTF-8\");\n    \n            // not yet supported !\n 
    //        response = ws.stringFromDataSource(source);\n    //        
assertEquals(request, response);\n    \n            // Data Handler\n           
 response = ws.stringFromDataHandler(new DataHandler(source));\n            
assertEquals(request, response);\n        }\n        //END SNIPPET: 
webservice\n    }\n\n# Running\n\n    \n    
-------------------------------------------------------\n     T E S T S\n    
-------------------------------------------------------\n    Running 
org.superbiz.attachment.AttachmentTest\n    Apache OpenEJB 4.0.0-beta-1    
build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = 
/Users/dblevins/examples/webservice-attachments\n    INFO - openejb.base = 
/Users/dblevins/examples/webservice-attachments\n    INFO - Configuring 
Service(id=Default Security Service, type=SecurityService, provider-id=Default 
Security Service)\n    INFO - Configuring Service(id=Default Transaction 
Manager, type=TransactionManager, provider-id=Default Tran
 saction Manager)\n    INFO - Found EjbModule in classpath: 
/Users/dblevins/examples/webservice-attachments/target/classes\n    INFO - 
Beginning load: 
/Users/dblevins/examples/webservice-attachments/target/classes\n    INFO - 
Configuring enterprise application: 
/Users/dblevins/examples/webservice-attachments/classpath.ear\n    INFO - 
Configuring Service(id=Default Stateless Container, type=Container, 
provider-id=Default Stateless Container)\n    INFO - Auto-creating a container 
for bean AttachmentImpl: Container(type=STATELESS, id=Default Stateless 
Container)\n    INFO - Enterprise application 
\"/Users/dblevins/examples/webservice-attachments/classpath.ear\" loaded.\n    
INFO - Assembling app: 
/Users/dblevins/examples/webservice-attachments/classpath.ear\n    INFO - 
Created Ejb(deployment-id=AttachmentImpl, ejb-name=AttachmentImpl, 
container=Default Stateless Container)\n    INFO - Started 
Ejb(deployment-id=AttachmentImpl, ejb-name=AttachmentImpl, container=Default 
Stateless Containe
 r)\n    INFO - Deployed 
Application(path=/Users/dblevins/examples/webservice-attachments/classpath.ear)\n
    INFO - Initializing network services\n    INFO - Creating 
ServerService(id=httpejbd)\n    INFO - Creating ServerService(id=cxf)\n    INFO 
- Creating ServerService(id=admin)\n    INFO - Creating 
ServerService(id=ejbd)\n    INFO - Creating ServerService(id=ejbds)\n    INFO - 
Initializing network services\n      ** Starting Services **\n      NAME        
         IP              PORT  \n      httpejbd             127.0.0.1       
4204  \n      admin thread         127.0.0.1       4200  \n      ejbd           
      127.0.0.1       4201  \n      ejbd                 127.0.0.1       4203  
\n    -------\n    Ready!\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 
0, Time elapsed: 3.034 sec\n    \n    Results :\n    \n    Tests run: 1, 
Failures: 0, Errors: 0, Skipped: 0\n    \n",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/webservice-attachments";
+      }
+    ],
+    "bmt":[
+      {
+        "name":"testing-transactions-bmt",
+        "readme":"Title: Testing Transactions BMT\n\nShows how to begin, 
commit and rollback transactions using a UserTransaction via a Stateful 
Bean.\n\n## Movie\n\n    package org.superbiz.injection.tx;\n\n    import 
javax.persistence.Entity;\n    import javax.persistence.GeneratedValue;\n    
import javax.persistence.Id;\n\n    @Entity\n    public class Movie {\n\n       
 @Id\n        @GeneratedValue\n        private Long id;\n        private String 
director;\n        private String title;\n        private int year;\n\n        
public Movie(String director, String title, int year) {\n            
this.director = director;\n            this.title = title;\n            
this.year = year;\n        }\n\n        public Movie() {\n\n        }\n\n       
 public Long getId() {\n            return id;\n        }\n\n        public 
void setId(Long id) {\n            this.id = id;\n        }\n\n        public 
String getDirector() {\n            return director;\n        }\n\n        
public void 
 setDirector(String director) {\n            this.director = director;\n        
}\n\n        public String getTitle() {\n            return title;\n        
}\n\n        public void setTitle(String title) {\n            this.title = 
title;\n        }\n\n        public int getYear() {\n            return year;\n 
       }\n\n        public void setYear(int year) {\n            this.year = 
year;\n        }\n    }\n\n## Movies\n\n    package 
org.superbiz.injection.tx;\n\n    import javax.annotation.Resource;\n    import 
javax.ejb.Stateful;\n    import javax.ejb.TransactionManagement;\n    import 
javax.ejb.TransactionManagementType;\n    import 
javax.persistence.EntityManager;\n    import 
javax.persistence.PersistenceContext;\n    import 
javax.persistence.PersistenceContextType;\n    import 
javax.persistence.Query;\n    import javax.transaction.UserTransaction;\n\n    
@Stateful(name = \"Movies\")\n    
@TransactionManagement(TransactionManagementType.BEAN)\n    public class Movies 
{\n\n    
     @PersistenceContext(unitName = \"movie-unit\", type = 
PersistenceContextType.TRANSACTION)\n        private EntityManager 
entityManager;\n\n        @Resource\n        private UserTransaction 
userTransaction;\n\n        public void addMovie(Movie movie) throws Exception 
{\n            try {\n                userTransaction.begin();\n                
entityManager.persist(movie);\n\n                //For some dummy reason, this 
db can have only 5 titles. :O)\n                if (countMovies() > 5) {\n      
              userTransaction.rollback();\n                } else {\n           
         userTransaction.commit();\n                }\n\n\n            } catch 
(Exception e) {\n                e.printStackTrace();\n                
userTransaction.rollback();\n            }\n        }\n\n        public Long 
countMovies() throws Exception {\n            Query query = 
entityManager.createQuery(\"SELECT COUNT(m) FROM Movie m\");\n            
return Long.class.cast(query.getSingleResult
 ());\n        }\n    }\n\n\n## persistence.xml\n\n    <persistence 
xmlns=\"http://java.sun.com/xml/ns/persistence\"; version=\"1.0\">\n\n      
<persistence-unit name=\"movie-unit\">\n        
<jta-data-source>movieDatabase</jta-data-source>\n        
<non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n        
<class>org.superbiz.injection.tx.Movie</class>\n\n        <properties>\n        
  <property name=\"openjpa.jdbc.SynchronizeMappings\" 
value=\"buildSchema(ForeignKeys=true)\"/>\n        </properties>\n      
</persistence-unit>\n    </persistence>\n\n## MoviesTest\n\n    package 
org.superbiz.injection.tx;\n\n    import org.junit.Assert;\n    import 
org.junit.Test;\n\n    import javax.ejb.EJB;\n    import 
javax.ejb.embeddable.EJBContainer;\n    import java.util.Properties;\n\n    
public class MoviesTest {\n\n        @EJB\n        private Movies movies;\n\n   
     @Test\n        public void testMe() throws Exception {\n            final 
Properties p = new Properties();\
 n            p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n   
         p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n      
      p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n\n        
    EJBContainer.createEJBContainer(p).getContext().bind(\"inject\", this);\n\n 
           movies.addMovie(new Movie(\"Asif Kapadia\", \"Senna\", 2010));\n     
       movies.addMovie(new Movie(\"José Padilha\", \"Tropa de Elite\", 
2007));\n            movies.addMovie(new Movie(\"Andy Wachowski/Lana 
Wachowski\", \"The Matrix\", 1999));\n            movies.addMovie(new 
Movie(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992));\n            
movies.addMovie(new Movie(\"Joel Coen\", \"Fargo\", 1996));\n            
movies.addMovie(new Movie(\"Joel Coen\", \"The Big Lebowski\", 1998));\n\n      
      Assert.assertEquals(5L, movies.countMovies().longValue());\n        }\n\n 
   }\n\n\n# Running\n\n    
-------------------------------------------------------\n
      T E S T S\n    -------------------------------------------------------\n  
  Running org.superbiz.injection.tx.MoviesTest\n    INFO - 
********************************************************************************\n
    INFO - OpenEJB http://tomee.apache.org/\n    INFO - Startup: Sat Jul 21 
16:39:28 EDT 2012\n    INFO - Copyright 1999-2012 (C) Apache OpenEJB Project, 
All Rights Reserved.\n    INFO - Version: 4.1.0\n    INFO - Build date: 
20120721\n    INFO - Build time: 12:06\n    INFO - 
********************************************************************************\n
    INFO - openejb.home = 
/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt\n    
INFO - openejb.base = 
/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt\n    
INFO - Created new singletonService 
org.apache.openejb.cdi.ThreadSingletonServiceImpl@3f3f210f\n    INFO - 
Succeeded in installing singleton service\n    INFO - Using 
'javax.ejb.embeddable.EJBContainer=true'\n   
  INFO - Cannot find the configuration file [conf/openejb.xml].  Will attempt 
to create one for the beans deployed.\n    INFO - Configuring 
Service(id=Default Security Service, type=SecurityService, provider-id=Default 
Security Service)\n    INFO - Configuring Service(id=Default Transaction 
Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    
INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default 
JDBC Database)\n    INFO - Creating TransactionManager(id=Default Transaction 
Manager)\n    INFO - Creating SecurityService(id=Default Security Service)\n    
INFO - Creating Resource(id=movieDatabase)\n    INFO - Beginning load: 
/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt/target/classes\n
    INFO - Configuring enterprise application: 
/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt\n    
WARNING - Method 'lookup' is not available for 'javax.annotation.Resource'. 
Probably using an older R
 untime.\n    INFO - Auto-deploying ejb Movies: 
EjbDeployment(deployment-id=Movies)\n    INFO - Configuring Service(id=Default 
Stateful Container, type=Container, provider-id=Default Stateful Container)\n   
 INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, 
id=Default Stateful Container)\n    INFO - Creating Container(id=Default 
Stateful Container)\n    INFO - Using directory /tmp for stateful session 
passivation\n    INFO - Configuring Service(id=Default Managed Container, 
type=Container, provider-id=Default Managed Container)\n    INFO - 
Auto-creating a container for bean org.superbiz.injection.tx.MoviesTest: 
Container(type=MANAGED, id=Default Managed Container)\n    INFO - Creating 
Container(id=Default Managed Container)\n    INFO - Using directory /tmp for 
stateful session passivation\n    INFO - Configuring 
PersistenceUnit(name=movie-unit)\n    INFO - Auto-creating a Resource with id 
'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.\n    INFO -
  Configuring Service(id=movieDatabaseNonJta, type=Resource, 
provider-id=movieDatabase)\n    INFO - Creating 
Resource(id=movieDatabaseNonJta)\n    INFO - Adjusting PersistenceUnit 
movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 
'movieDatabaseUnmanaged'\n    INFO - Enterprise application 
\"/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt\" 
loaded.\n    INFO - Assembling app: 
/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt\n    
SEVERE - JAVA AGENT NOT INSTALLED. The JPA Persistence Provider requested 
installation of a ClassFileTransformer which requires a JavaAgent.  See 
http://tomee.apache.org/3.0/javaagent.html\n    INFO - 
PersistenceUnit(name=movie-unit, 
provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider 
time 399ms\n    INFO - 
Jndi(name=\"java:global/testing-transactions-bmt/Movies!org.superbiz.injection.tx.Movies\")\n
    INFO - Jndi(name=\"java:global/testing-transactions-bmt/Movi
 es\")\n    INFO - Existing thread singleton service in SystemInstance() 
org.apache.openejb.cdi.ThreadSingletonServiceImpl@3f3f210f\n    INFO - 
OpenWebBeans Container is starting...\n    INFO - Adding OpenWebBeansPlugin : 
[CdiPlugin]\n    INFO - All injection points are validated successfully.\n    
INFO - OpenWebBeans Container has started, it took 157 ms.\n    INFO - Created 
Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful 
Container)\n    INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, 
container=Default Stateful Container)\n    INFO - Deployed 
Application(path=/home/boto/dev/ws/openejb_trunk/openejb/examples/testing-transactions-bmt)\n
    INFO - Started user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@709a1411\n    
21-Jul-2012 4:39:32 PM null openjpa.Runtime\n    INFO: Starting OpenJPA 2.2.0\n 
   21-Jul-2012 4:39:32 PM null openjpa.jdbc.JDBC\n    INFO: Using dictionary 
class \"org.apache.openjpa.jdbc.sql.HSQLDictionary\" (HSQL D
 atabase Engine 2.2.8 ,HSQL Database Engine Driver 2.2.8).\n    21-Jul-2012 
4:39:33 PM null openjpa.Enhance\n    INFO: Creating subclass and redefining 
methods for \"[class org.superbiz.injection.tx.Movie]\". This means that your 
application will be less efficient than it would if you ran the OpenJPA 
enhancer.\n    INFO - Committing user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@709a1411\n    INFO - 
Started user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@2bb64b70\n    INFO - 
Committing user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@2bb64b70\n    INFO - 
Started user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@627b5c\n    INFO - 
Committing user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@627b5c\n    INFO - 
Started user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@2f031310\n    INFO - 
Committing user transaction org.apache.geronimo.transacti
 on.manager.TransactionImpl@2f031310\n    INFO - Started user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@4df2a9da\n    INFO - 
Committing user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@4df2a9da\n    INFO - 
Started user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@3fa9b4a4\n    INFO - 
Rolling back user transaction 
org.apache.geronimo.transaction.manager.TransactionImpl@3fa9b4a4\n    Tests 
run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.471 sec\n\n    
Results :\n\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/testing-transactions-bmt";
+      }
+    ],
+    "bval":[
+      {
+        "name":"bval-evaluation-redeployment",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/bval-evaluation-redeployment";
+      }
+    ],
+    "callbacks":[
+      {
+        "name":"simple-stateful-callbacks",
+        "readme":"Title: Simple Stateful with callback methods\n\nThis example 
shows how to create a stateful session bean that uses the @PrePassivate, 
@PostActivate, @PostConstruct, @PreDestroy and @AroundInvoke annotations.\n\n## 
CallbackCounter\n\n    package org.superbiz.counter;\n\n    import 
javax.annotation.PostConstruct;\n    import javax.annotation.PreDestroy;\n    
import javax.ejb.PostActivate;\n    import javax.ejb.PrePassivate;\n    import 
javax.ejb.Stateful;\n    import javax.ejb.StatefulTimeout;\n    import 
javax.interceptor.AroundInvoke;\n    import 
javax.interceptor.InvocationContext;\n    import java.io.Serializable;\n    
import java.util.concurrent.TimeUnit;\n\n    @Stateful\n    
@StatefulTimeout(value = 1, unit = TimeUnit.SECONDS)\n    public class 
CallbackCounter implements Serializable {\n\n        private int count = 0;\n\n 
       @PrePassivate\n        public void prePassivate() {\n            
ExecutionChannel.getInstance().notifyObservers(\"prePassivate\");\n
         }\n\n        @PostActivate\n        public void postActivate() {\n     
       ExecutionChannel.getInstance().notifyObservers(\"postActivate\");\n      
  }\n\n        @PostConstruct\n        public void postConstruct() {\n          
  ExecutionChannel.getInstance().notifyObservers(\"postConstruct\");\n        
}\n\n        @PreDestroy\n        public void preDestroy() {\n            
ExecutionChannel.getInstance().notifyObservers(\"preDestroy\");\n        }\n\n  
      @AroundInvoke\n        public Object intercept(InvocationContext ctx) 
throws Exception {\n            
ExecutionChannel.getInstance().notifyObservers(ctx.getMethod().getName());\n    
        return ctx.proceed();\n        }\n\n        public int count() {\n      
      return count;\n        }\n\n        public int increment() {\n            
return ++count;\n        }\n\n        public int reset() {\n            return 
(count = 0);\n        }\n    }\n\n## ExecutionChannel\n\n    package 
org.superbiz.counter;\n\n    i
 mport java.util.ArrayList;\n    import java.util.List;\n\n    public class 
ExecutionChannel {\n        private static final ExecutionChannel INSTANCE = 
new ExecutionChannel();\n\n        private final List<ExecutionObserver> 
observers = new ArrayList<ExecutionObserver>();\n\n        public static 
ExecutionChannel getInstance() {\n            return INSTANCE;\n        }\n\n   
     public void addObserver(ExecutionObserver observer) {\n            
this.observers.add(observer);\n        }\n\n        public void 
notifyObservers(Object value) {\n            for (ExecutionObserver observer : 
this.observers) {\n                observer.onExecution(value);\n            
}\n        }\n    }\n\n## ExecutionObserver\n\n    package 
org.superbiz.counter;\n\n    public interface ExecutionObserver {\n\n        
void onExecution(Object value);\n\n    }\n\n## CounterCallbacksTest\n\n    
package org.superbiz.counter;\n\n    import junit.framework.Assert;\n    import 
org.junit.Test;\n\n    import javax.
 ejb.embeddable.EJBContainer;\n    import javax.naming.Context;\n    import 
javax.naming.InitialContext;\n    import javax.naming.NamingException;\n    
import java.util.*;\n\n    public class CounterCallbacksTest implements 
ExecutionObserver {\n        private static List<Object> received = new 
ArrayList<Object>();\n\n        public Context getContext() throws 
NamingException {\n            final Properties p = new Properties();\n         
   p.put(Context.INITIAL_CONTEXT_FACTORY, 
\"org.apache.openejb.core.LocalInitialContextFactory\");\n            return 
new InitialContext(p);\n\n        }\n\n        @Test\n        public void 
test() throws Exception {\n            final Map<String, Object> p = new 
HashMap<String, Object>();\n            p.put(\"MySTATEFUL\", 
\"new://Container?type=STATEFUL\");\n            p.put(\"MySTATEFUL.Capacity\", 
\"2\"); //How many instances of Stateful beans can our server hold in memory?\n 
           p.put(\"MySTATEFUL.Frequency\", \"1\"); //Interval in se
 conds between checks\n            p.put(\"MySTATEFUL.BulkPassivate\", \"0\"); 
//No bulkPassivate - just passivate entities whenever it is needed\n            
final EJBContainer container = EJBContainer.createEJBContainer(p);\n\n          
  //this is going to track the execution\n            
ExecutionChannel.getInstance().addObserver(this);\n\n            {\n            
    final Context context = getContext();\n\n                CallbackCounter 
counterA = (CallbackCounter) 
context.lookup(\"java:global/simple-stateful-callbacks/CallbackCounter\");\n    
            Assert.assertNotNull(counterA);\n                
Assert.assertEquals(\"postConstruct\", received.remove(0));\n\n                
Assert.assertEquals(0, counterA.count());\n                
Assert.assertEquals(\"count\", received.remove(0));\n\n                
Assert.assertEquals(1, counterA.increment());\n                
Assert.assertEquals(\"increment\", received.remove(0));\n\n                
Assert.assertEquals(0, counterA
 .reset());\n                Assert.assertEquals(\"reset\", 
received.remove(0));\n\n                Assert.assertEquals(1, 
counterA.increment());\n                Assert.assertEquals(\"increment\", 
received.remove(0));\n\n                System.out.println(\"Waiting 2 
seconds...\");\n                Thread.sleep(2000);\n\n                
Assert.assertEquals(\"preDestroy\", received.remove(0));\n\n                try 
{\n                    counterA.increment();\n                    
Assert.fail(\"The ejb is not supposed to be there.\");\n                } catch 
(javax.ejb.NoSuchEJBException e) {\n                    //excepted\n            
    }\n\n                context.close();\n            }\n\n            {\n     
           final Context context = getContext();\n\n                
CallbackCounter counterA = (CallbackCounter) 
context.lookup(\"java:global/simple-stateful-callbacks/CallbackCounter\");\n    
            Assert.assertEquals(\"postConstruct\", received.remove(0));\n\n    
             Assert.assertEquals(1, counterA.increment());\n                
Assert.assertEquals(\"increment\", received.remove(0));\n\n                
((CallbackCounter) 
context.lookup(\"java:global/simple-stateful-callbacks/CallbackCounter\")).count();\n
                Assert.assertEquals(\"postConstruct\", received.remove(0));\n   
             Assert.assertEquals(\"count\", received.remove(0));\n\n            
    ((CallbackCounter) 
context.lookup(\"java:global/simple-stateful-callbacks/CallbackCounter\")).count();\n
                Assert.assertEquals(\"postConstruct\", received.remove(0));\n   
             Assert.assertEquals(\"count\", received.remove(0));\n\n            
    System.out.println(\"Waiting 2 seconds...\");\n                
Thread.sleep(2000);\n                Assert.assertEquals(\"prePassivate\", 
received.remove(0));\n\n                context.close();\n            }\n       
     container.close();\n\n            Assert.assertEquals(\"preDestroy\", 
received.remove(0)
 );\n            Assert.assertEquals(\"preDestroy\", received.remove(0));\n\n   
         Assert.assertTrue(received.toString(), received.isEmpty());\n        
}\n\n        @Override\n        public void onExecution(Object value) {\n       
     System.out.println(\"Test step -> \" + value);\n            
received.add(value);\n        }\n    }\n\n# Running\n\n    
-------------------------------------------------------\n     T E S T S\n    
-------------------------------------------------------\n    Running 
org.superbiz.counter.CounterCallbacksTest\n    INFO - 
********************************************************************************\n
    INFO - OpenEJB http://tomee.apache.org/\n    INFO - Startup: Sat Jul 21 
08:18:28 EDT 2012\n    INFO - Copyright 1999-2012 (C) Apache OpenEJB Project, 
All Rights Reserved.\n    INFO - Version: 4.1.0\n    INFO - Build date: 
20120721\n    INFO - Build time: 04:06\n    INFO - 
*****************************************************************************
 ***\n    INFO - openejb.home = 
/home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks\n    
INFO - openejb.base = 
/home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks\n    
INFO - Created new singletonService 
org.apache.openejb.cdi.ThreadSingletonServiceImpl@527736bd\n    INFO - 
Succeeded in installing singleton service\n    INFO - Using 
'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Cannot find the 
configuration file [conf/openejb.xml].  Will attempt to create one for the 
beans deployed.\n    INFO - Configuring Service(id=Default Security Service, 
type=SecurityService, provider-id=Default Security Service)\n    INFO - 
Configuring Service(id=Default Transaction Manager, type=TransactionManager, 
provider-id=Default Transaction Manager)\n    INFO - Configuring 
Service(id=MySTATEFUL, type=Container, provider-id=Default Stateful 
Container)\n    INFO - Creating TransactionManager(id=Default Transaction 
Manager)\n    INFO - Creating SecuritySe
 rvice(id=Default Security Service)\n    INFO - Creating 
Container(id=MySTATEFUL)\n    INFO - Using directory /tmp for stateful session 
passivation\n    INFO - Beginning load: 
/home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks/target/classes\n
    INFO - Configuring enterprise application: 
/home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks\n    
INFO - Auto-deploying ejb CallbackCounter: 
EjbDeployment(deployment-id=CallbackCounter)\n    INFO - Configuring 
Service(id=Default Managed Container, type=Container, provider-id=Default 
Managed Container)\n    INFO - Auto-creating a container for bean 
org.superbiz.counter.CounterCallbacksTest: Container(type=MANAGED, id=Default 
Managed Container)\n    INFO - Creating Container(id=Default Managed 
Container)\n    INFO - Using directory /tmp for stateful session passivation\n  
  INFO - Enterprise application 
\"/home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks\" 
loaded.\n    I
 NFO - Assembling app: 
/home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks\n    
INFO - 
Jndi(name=\"java:global/simple-stateful-callbacks/CallbackCounter!org.superbiz.counter.CallbackCounter\")\n
    INFO - 
Jndi(name=\"java:global/simple-stateful-callbacks/CallbackCounter\")\n    INFO 
- Existing thread singleton service in SystemInstance() 
org.apache.openejb.cdi.ThreadSingletonServiceImpl@527736bd\n    INFO - 
OpenWebBeans Container is starting...\n    INFO - Adding OpenWebBeansPlugin : 
[CdiPlugin]\n    INFO - All injection points are validated successfully.\n    
INFO - OpenWebBeans Container has started, it took 225 ms.\n    INFO - Created 
Ejb(deployment-id=CallbackCounter, ejb-name=CallbackCounter, 
container=MySTATEFUL)\n    INFO - Started Ejb(deployment-id=CallbackCounter, 
ejb-name=CallbackCounter, container=MySTATEFUL)\n    INFO - Deployed 
Application(path=/home/boto/dev/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks)\n
    Test step -> postConstru
 ct\n    Test step -> count\n    Test step -> increment\n    Test step -> 
reset\n    Test step -> increment\n    Waiting 2 seconds...\n    Test step -> 
preDestroy\n    INFO - Removing the timed-out stateful session bean instance 
583c10bfdbd326ba:57f94a9b:138a9798adf:-8000\n    INFO - Activation failed: file 
not found /tmp/583c10bfdbd326ba=57f94a9b=138a9798adf=-8000\n    Test step -> 
postConstruct\n    Test step -> increment\n    Test step -> postConstruct\n    
Test step -> count\n    Test step -> postConstruct\n    Test step -> count\n    
Waiting 2 seconds...\n    Test step -> prePassivate\n    INFO - Passivating to 
file /tmp/583c10bfdbd326ba=57f94a9b=138a9798adf=-7fff\n    Test step -> 
preDestroy\n    INFO - Removing the timed-out stateful session bean instance 
583c10bfdbd326ba:57f94a9b:138a9798adf:-7ffe\n    Test step -> preDestroy\n    
INFO - Removing the timed-out stateful session bean instance 
583c10bfdbd326ba:57f94a9b:138a9798adf:-7ffd\n    INFO - Undeploying app: 
/home/boto/de
 v/ws/openejb_trunk/openejb/examples/simple-stateful-callbacks\n    Tests run: 
1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.487 sec\n\n    Results 
:\n\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n\n    [INFO] 
------------------------------------------------------------------------\n    
[INFO] BUILD SUCCESS\n    [INFO] 
------------------------------------------------------------------------\n    
[INFO] Total time: 15.803s\n    [INFO] Finished at: Sat Jul 21 08:18:35 EDT 
2012\n    [INFO] Final Memory: 11M/247M\n    [INFO] 
------------------------------------------------------------------------\n\n\n",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/simple-stateful-callbacks";
+      },
+      {
+        "name":"simple-stateless-callbacks",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/simple-stateless-callbacks";
+      }
+    ],
+    "cdi":[
+      {
+        "name":"applicationcomposer-jaxws-cdi",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/applicationcomposer-jaxws-cdi";
+      },
+      {
+        "name":"cdi-basic",
+        "readme":"Title: CDI @Inject\n\nTo use `@Inject`, the first thing you 
need is a `META-INF/beans.xml` file in the module\nor jar.  This effectively 
turns on CDI and allows the `@Inject` references to work.\nNo 
`META-INF/beans.xml` no injection, period.  This may seem overly strict,\nbut 
it is not without reason.  The CDI API is a bit greedy and does consume a 
fair\nabout of resources by design.\n\nWhen the container constructs a bean 
with an `@Inject` reference,\nit will first find or create the object that will 
be injected.  For the sake of\nsimplicity, the is example has a basic `Faculty` 
pojo with a no-arg constructor.  Anyone\nreferencing `@Inject Faculty` will get 
their own instance of `Faculty`.  If the desire\nis to share the same instance 
of `Faculty`, see the concept of `scopes` -- this is\nexactly what scopes are 
for.\n\n# Example\n\nIn this example we have an `@Stateless` bean `Course` with 
an `@Inject` reference to an\nobject of type `Faculty`.  When `Course` is c
 reated, the container will also create an\ninstance of `Faculty`.  The 
`@PostConstruct` will be called on the `Faculty`,\nthen the `Faculty` instance 
will be injected into the `Course` bean.  Finally, the\n`@PostConstruct` will 
be invoked on `Course` and then we're done.  All instances will\nhave been 
created.\n\nThe `CourseTest` test case drives this creation process by having 
`Course` injected\ninto it in its `@Setup` method.  By the time our `@Test` 
method is invoked,\nall the real work should be done and we should be ready to 
go.  In the test case we do\nsome basic asserts to ensure everything was 
constructed, all `@PostConstruct` methods\ncalled and everyting injected.\n\n## 
Faculty <small>a basic injectable pojo</small>\n\n    public class Faculty 
{\n\n        private List<String> facultyMembers;\n\n        private String 
facultyName;\n\n        @PostConstruct\n        public void initialize() {\n    
        this.facultyMembers = new ArrayList<String>();\n            facultyMe
 mbers.add(\"Ian Schultz\");\n            facultyMembers.add(\"Diane 
Reyes\");\n            facultyName = \"Computer Science\";\n        }\n\n       
 public List<String> getFacultyMembers() {\n            return 
facultyMembers;\n        }\n\n        public String getFacultyName() {\n        
    return facultyName;\n        }\n\n    }\n\n## Course <small>a simple 
session bean</small>\n\n    @Stateless\n    public class Course {\n\n        
@Inject\n        private Faculty faculty;\n\n        private String 
courseName;\n\n        private int capacity;\n\n        @PostConstruct\n        
private void init() {\n            assert faculty != null;\n\n            // 
These strings can be externalized\n            // We'll see how to do that 
later\n            this.courseName = \"CDI 101 - Introduction to CDI\";\n       
     this.capacity = 100;\n        }\n\n        public String getCourseName() 
{\n            return courseName;\n        }\n\n        public int 
getCapacity() {\n            re
 turn capacity;\n        }\n\n        public Faculty getFaculty() {\n           
 return faculty;\n        }\n    }\n\n# Test Case\n\n    public class 
CourseTest extends TestCase {\n\n        @EJB\n        private Course 
course;\n\n        @Before\n        public void setUp() throws Exception {\n    
        EJBContainer.createEJBContainer().getContext().bind(\"inject\", 
this);\n        }\n\n        @Test\n        public void test() {\n\n            
// Was the EJB injected?\n            assertTrue(course != null);\n\n           
 // Was the Course @PostConstruct called?\n            
assertNotNull(course.getCourseName());\n            
assertTrue(course.getCapacity() > 0);\n\n            // Was a Faculty instance 
injected into Course?\n            final Faculty faculty = 
course.getFaculty();\n            assertTrue(faculty != null);\n\n            
// Was the @PostConstruct called on Faculty?\n            
assertEquals(faculty.getFacultyName(), \"Computer Science\");\n            
assertEqua
 ls(faculty.getFacultyMembers().size(), 2);\n        }\n    }\n\n# 
Running\n\n\n    -------------------------------------------------------\n     
T E S T S\n    -------------------------------------------------------\n    
Running org.superbiz.cdi.basic.CourseTest\n    Apache OpenEJB 4.0.0-beta-1    
build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = 
/Users/dblevins/examples/cdi-basic\n    INFO - openejb.base = 
/Users/dblevins/examples/cdi-basic\n    INFO - Using 
'javax.ejb.embeddable.EJBContainer=true'\n    INFO - Configuring 
Service(id=Default Security Service, type=SecurityService, provider-id=Default 
Security Service)\n    INFO - Configuring Service(id=Default Transaction 
Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    
INFO - Found EjbModule in classpath: 
/Users/dblevins/examples/cdi-basic/target/classes\n    INFO - Beginning load: 
/Users/dblevins/examples/cdi-basic/target/classes\n    INFO - Configuring 
enterprise applica
 tion: /Users/dblevins/examples/cdi-basic\n    INFO - Configuring 
Service(id=Default Managed Container, type=Container, provider-id=Default 
Managed Container)\n    INFO - Auto-creating a container for bean 
cdi-basic.Comp: Container(type=MANAGED, id=Default Managed Container)\n    INFO 
- Configuring Service(id=Default Stateless Container, type=Container, 
provider-id=Default Stateless Container)\n    INFO - Auto-creating a container 
for bean Course: Container(type=STATELESS, id=Default Stateless Container)\n    
INFO - Enterprise application \"/Users/dblevins/examples/cdi-basic\" loaded.\n  
  INFO - Assembling app: /Users/dblevins/examples/cdi-basic\n    INFO - 
Jndi(name=\"java:global/cdi-basic/cdi-basic.Comp!org.apache.openejb.BeanContext$Comp\")\n
    INFO - Jndi(name=\"java:global/cdi-basic/cdi-basic.Comp\")\n    INFO - 
Jndi(name=\"java:global/cdi-basic/Course!org.superbiz.cdi.basic.Course\")\n    
INFO - Jndi(name=\"java:global/cdi-basic/Course\")\n    INFO - 
Jndi(name=\"java:global/E
 
jbModule1833350875/org.superbiz.cdi.basic.CourseTest!org.superbiz.cdi.basic.CourseTest\")\n
    INFO - 
Jndi(name=\"java:global/EjbModule1833350875/org.superbiz.cdi.basic.CourseTest\")\n
    INFO - Created Ejb(deployment-id=Course, ejb-name=Course, container=Default 
Stateless Container)\n    INFO - Created Ejb(deployment-id=cdi-basic.Comp, 
ejb-name=cdi-basic.Comp, container=Default Managed Container)\n    INFO - 
Created Ejb(deployment-id=org.superbiz.cdi.basic.CourseTest, 
ejb-name=org.superbiz.cdi.basic.CourseTest, container=Default Managed 
Container)\n    INFO - Started Ejb(deployment-id=Course, ejb-name=Course, 
container=Default Stateless Container)\n    INFO - Started 
Ejb(deployment-id=cdi-basic.Comp, ejb-name=cdi-basic.Comp, container=Default 
Managed Container)\n    INFO - Started 
Ejb(deployment-id=org.superbiz.cdi.basic.CourseTest, 
ejb-name=org.superbiz.cdi.basic.CourseTest, container=Default Managed 
Container)\n    INFO - Deployed 
Application(path=/Users/dblevins/examples/cdi-bas
 ic)\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.126 
sec\n\n    Results :\n\n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0\n",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-basic";
+      },
+      {
+        "name":"simple-mdb-and-cdi",
+        "readme":"Title: Simple MDB and CDI\n\n*Help us document this example! 
Click the blue pencil icon in the upper right to edit this page.*\n\n## 
ChatBean\n\n    package org.superbiz.mdb;\n    \n    import 
javax.annotation.Resource;\n    import javax.ejb.MessageDriven;\n    import 
javax.inject.Inject;\n    import javax.jms.Connection;\n    import 
javax.jms.ConnectionFactory;\n    import javax.jms.DeliveryMode;\n    import 
javax.jms.JMSException;\n    import javax.jms.Message;\n    import 
javax.jms.MessageListener;\n    import javax.jms.MessageProducer;\n    import 
javax.jms.Queue;\n    import javax.jms.Session;\n    import 
javax.jms.TextMessage;\n    \n    @MessageDriven\n    public class ChatBean 
implements MessageListener {\n    \n        @Resource\n        private 
ConnectionFactory connectionFactory;\n    \n        @Resource(name = 
\"AnswerQueue\")\n        private Queue answerQueue;\n    \n        @Inject\n   
     private ChatRespondCreator responder;\n    \n        public 
 void onMessage(Message message) {\n            try {\n    \n                
final TextMessage textMessage = (TextMessage) message;\n                final 
String question = textMessage.getText();\n                final String response 
= responder.respond(question);\n    \n                if (response != null) {\n 
                   respond(response);\n                }\n            } catch 
(JMSException e) {\n                throw new IllegalStateException(e);\n       
     }\n        }\n    \n        private void respond(String text) throws 
JMSException {\n    \n            Connection connection = null;\n            
Session session = null;\n    \n            try {\n                connection = 
connectionFactory.createConnection();\n                connection.start();\n    
\n                // Create a Session\n                session = 
connection.createSession(false, Session.AUTO_ACKNOWLEDGE);\n    \n              
  // Create a MessageProducer from the Session to the Topic or Queue\n
                 MessageProducer producer = 
session.createProducer(answerQueue);\n                
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);\n    \n                
// Create a message\n                TextMessage message = 
session.createTextMessage(text);\n    \n                // Tell the producer to 
send the message\n                producer.send(message);\n            } 
finally {\n                // Clean up\n                if (session != null) 
session.close();\n                if (connection != null) connection.close();\n 
           }\n        }\n    }\n\n## ChatRespondCreator\n\n    package 
org.superbiz.mdb;\n    \n    public class ChatRespondCreator {\n        public 
String respond(String question) {\n            if (\"Hello 
World!\".equals(question)) {\n                return \"Hello, Test Case!\";\n   
         } else if (\"How are you?\".equals(question)) {\n                
return \"I'm doing well.\";\n            } else if (\"Still 
spinning?\".equals(question)) 
 {\n                return \"Once every day, as usual.\";\n            }\n      
      return null;\n        }\n    }\n\n## beans.xml\n\n    <!--\n    \n        
Licensed to the Apache Software Foundation (ASF) under one or more\n        
contributor license agreements.  See the NOTICE file distributed with\n        
this work for additional information regarding copyright ownership.\n        
The ASF licenses this file to You under the Apache License, Version 2.0\n       
 (the \"License\"); you may not use this file except in compliance with\n       
 the License.  You may obtain a copy of the License at\n    \n           
http://www.apache.org/licenses/LICENSE-2.0\n        Unless required by 
applicable law or agreed to in writing, software\n        distributed under the 
License is distributed on an \"AS IS\" BASIS,\n        WITHOUT WARRANTIES OR 
CONDITIONS OF ANY KIND, either express or implied.\n        See the License for 
the specific language governing permissions and\n        limitati
 ons under the License.\n    -->\n    \n    <beans/>\n    \n\n## 
ChatBeanTest\n\n    package org.superbiz.mdb;\n    \n    import 
junit.framework.TestCase;\n    \n    import javax.annotation.Resource;\n    
import javax.ejb.embeddable.EJBContainer;\n    import javax.jms.Connection;\n   
 import javax.jms.ConnectionFactory;\n    import javax.jms.JMSException;\n    
import javax.jms.MessageConsumer;\n    import javax.jms.MessageProducer;\n    
import javax.jms.Queue;\n    import javax.jms.Session;\n    import 
javax.jms.TextMessage;\n    \n    public class ChatBeanTest extends TestCase 
{\n    \n        @Resource\n        private ConnectionFactory 
connectionFactory;\n    \n        @Resource(name = \"ChatBean\")\n        
private Queue questionQueue;\n    \n        @Resource(name = \"AnswerQueue\")\n 
       private Queue answerQueue;\n    \n        public void test() throws 
Exception {\n            
EJBContainer.createEJBContainer().getContext().bind(\"inject\", this);\n    \n  
  \n            f
 inal Connection connection = connectionFactory.createConnection();\n    \n     
       connection.start();\n    \n            final Session session = 
connection.createSession(false, Session.AUTO_ACKNOWLEDGE);\n    \n            
final MessageProducer questions = session.createProducer(questionQueue);\n    
\n            final MessageConsumer answers = 
session.createConsumer(answerQueue);\n    \n    \n            sendText(\"Hello 
World!\", questions, session);\n    \n            assertEquals(\"Hello, Test 
Case!\", receiveText(answers));\n    \n    \n            sendText(\"How are 
you?\", questions, session);\n    \n            assertEquals(\"I'm doing 
well.\", receiveText(answers));\n    \n    \n            sendText(\"Still 
spinning?\", questions, session);\n    \n            assertEquals(\"Once every 
day, as usual.\", receiveText(answers));\n        }\n    \n        private void 
sendText(String text, MessageProducer questions, Session session) throws 
JMSException {\n    \n            q
 uestions.send(session.createTextMessage(text));\n        }\n    \n        
private String receiveText(MessageConsumer answers) throws JMSException {\n    
\n            return ((TextMessage) answers.receive(1000)).getText();\n        
}\n    }\n",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/simple-mdb-and-cdi";
+      },
+      {
+        "name":"jsf-cdi-and-ejb",
+        "readme":"Title: JSF-CDI-EJB\n\nThe simple application contains a CDI 
managed bean `CalculatorBean`, which uses the `Calculator` EJB to add two 
numbers\nand display the results to the user. The EJB is injected in the 
managed bean using @Inject annotation.\n\nYou could run this in the latest 
Apache TomEE 
[snapshot](https://repository.apache.org/content/repositories/snapshots/org/apache/openejb/apache-tomee/)\n\nThe
 complete source code is below but lets break down to look at some smaller 
snippets and see  how it works.\n\n\nA little note on the setup:\n\nAs for the 
libraries, myfaces-api and myfaces-impl are provided in tomee/lib and hence 
they should not be a part of the\nwar. In maven terms, they would be with scope 
'provided'\n\nAlso note that we use servlet 2.5 declaration in 
web.xml\n<web-app xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  
xmlns=\"http://java.sun.com/xml/ns/javaee\"\n  
xmlns:web=\"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n  xsi:sche
 maLocation=\"http://java.sun.com/xml/ns/javaee\n      
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n  version=\"2.5\">\n\nAnd 
we use 2.0 version of faces-config\n\n <faces-config 
xmlns=\"http://java.sun.com/xml/ns/javaee\"\n               
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n               
xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n       
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd\"\n               
version=\"2.0\">\n\nTo make this a cdi-aware-archive (i.e bean archive) an 
empty beans.xml is added in WEB-INF\n\n       <?xml version=\"1.0\" 
encoding=\"UTF-8\"?>\n\n       <beans 
xmlns=\"http://java.sun.com/xml/ns/javaee\"; 
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         
xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n         
http://java.sun.com/xml/ns/javaee/beans_1_0.xsd\";>\n       </beans>\n\nWe'll 
first declare the FacesServlet in the web.xml\n\n      <servlet>\n        
<servlet-name>Faces Servlet</serv
 let-name>\n        
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n        
<load-on-startup>1</load-on-startup>\n      </servlet>\n\nFacesServlet acts as 
the master controller.\n\nWe'll then create the calculator.xhtml file.\n\n      
     <h:outputText value='Enter first number'/>\n           <h:inputText 
value='#{calculatorBean.x}'/>\n           <h:outputText value='Enter second 
number'/>\n           <h:inputText value='#{calculatorBean.y}'/>\n           
<h:commandButton action=\"#{calculatorBean.add}\" value=\"Add\"/>\n\nNotice how 
we've used the bean here. By default, the bean name would be the simple name of 
the bean\nclass with the first letter in lower case.\n\nWe've annotated the 
`CalculatorBean` with `@RequestScoped`.\nSo when a request comes in, the bean 
is instantiated and placed in the request scope.\n\n<h:inputText 
value='#{calculatorBean.x}'/>\n\nHere, getX() method of calculatorBean is 
invoked and the resulting value is displayed.\nx being a Double, we 
 rightly should see 0.0 displayed.\n\nWhen you change the value and submit the 
form, these entered values are bound using the setters\nin the bean and then 
the commandButton-action method is invoked.\n\nIn this case, 
CalculatorBean#add() is invoked.\n\nCalculator#add() delegates the work to the 
ejb, gets the result, stores it\nand then returns what view is to be 
rendered.\n\nThe return value \"success\" is checked up in faces-config 
navigation-rules\nand the respective page is rendered.\n\nIn our case, 
'result.xhtml' page is rendered where\nuse EL and display the result from the 
request-scoped `calculatorBean`.\n\n#Source Code\n\n## CalculatorBean\n\n    
import javax.enterprise.context.RequestScoped;\n    import 
javax.inject.Named;\n    import javax.inject.Inject;\n\n    @RequestScoped\n    
@Named\n    public class CalculatorBean {\n        @Inject\n        Calculator 
calculator;\n        private double x;\n        private double y;\n        
private double result;\n    \n        publ
 ic double getX() {\n            return x;\n        }\n    \n        public 
void setX(double x) {\n            this.x = x;\n        }\n    \n        public 
double getY() {\n            return y;\n        }\n    \n        public void 
setY(double y) {\n            this.y = y;\n        }\n    \n        public 
double getResult() {\n            return result;\n        }\n    \n        
public void setResult(double result) {\n            this.result = result;\n     
   }\n    \n        public String add() {\n            result = 
calculator.add(x, y);\n            return \"success\";\n        }\n    }\n\n## 
Calculator\n\n    package org.superbiz.jsf;\n    \n    import 
javax.ejb.Stateless;\n    \n    @Stateless\n    public class Calculator{\n    
\n        public double add(double x, double y) {\n            return x + y;\n  
      }\n    }\n\n\n#web.xml\n\n<?xml version=\"1.0\"?>\n\n<web-app 
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         
xmlns=\"http://java.sun.com/xml/ns/jav
 aee\"\n         
xmlns:web=\"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n         
xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n      
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"\n         
version=\"2.5\">\n\n  <description>MyProject web.xml</description>\n\n  <!-- 
Faces Servlet -->\n  <servlet>\n    <servlet-name>Faces 
Servlet</servlet-name>\n    
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>\n    
<load-on-startup>1</load-on-startup>\n  </servlet>\n\n  <!-- Faces Servlet 
Mapping -->\n  <servlet-mapping>\n    <servlet-name>Faces 
Servlet</servlet-name>\n    <url-pattern>*.jsf</url-pattern>\n  
</servlet-mapping>\n\n  <!-- Welcome files -->\n  <welcome-file-list>\n    
<welcome-file>index.jsp</welcome-file>\n    
<welcome-file>index.html</welcome-file>\n  
</welcome-file-list>\n\n</web-app>\n\n\n#Calculator.xhtml\n\n<?xml 
version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 
1.0 Transitional//EN\"\n\"http://www.w3.org/TR/x
 html1/DTD/xhtml1-transitional.dtd\">\n<html 
xmlns=\"http://www.w3.org/1999/xhtml\"\n      
xmlns:f=\"http://java.sun.com/jsf/core\"\n      
xmlns:h=\"http://java.sun.com/jsf/html\";>\n\n\n<h:body bgcolor=\"white\">\n    
<f:view>\n        <h:form>\n            <h:panelGrid columns=\"2\">\n           
     <h:outputText value='Enter first number'/>\n                <h:inputText 
value='#{calculatorBean.x}'/>\n                <h:outputText value='Enter 
second number'/>\n                <h:inputText value='#{calculatorBean.y}'/>\n  
              <h:commandButton action=\"#{calculatorBean.add}\" 
value=\"Add\"/>\n            </h:panelGrid>\n        </h:form>\n    
</f:view>\n</h:body>\n</html>\n\n\n #Result.xhtml\n\n<?xml version=\"1.0\" 
encoding=\"UTF-8\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 
Transitional//EN\"\n        
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\";>\n<html 
xmlns=\"http://www.w3.org/1999/xhtml\"\n      
xmlns:f=\"http://java.sun.com/jsf/core\"\n      xml
 ns:h=\"http://java.sun.com/jsf/html\";>\n\n<h:body>\n<f:view>\n    <h:form 
id=\"mainForm\">\n        <h2><h:outputText value=\"Result of adding 
#{calculatorBean.x} and #{calculatorBean.y} is #{calculatorBean.result 
}\"/></h2>\n        <h:commandLink action=\"back\">\n            <h:outputText 
value=\"Home\"/>\n        </h:commandLink>\n    
</h:form>\n</f:view>\n</h:body>\n</html>\n\n #faces-config.xml\n\n <?xml 
version=\"1.0\"?>\n <faces-config xmlns=\"http://java.sun.com/xml/ns/javaee\"\n 
              xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         
      xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n       
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd\"\n               
version=\"2.0\">\n\n   <navigation-rule>\n     
<from-view-id>/calculator.xhtml</from-view-id>\n     <navigation-case>\n       
<from-outcome>success</from-outcome>\n       
<to-view-id>/result.xhtml</to-view-id>\n     </navigation-case>\n   
</navigation-rule>\n\n   <navigation-ru
 le>\n     <from-view-id>/result.xhtml</from-view-id>\n     <navigation-case>\n 
      <from-outcome>back</from-outcome>\n       
<to-view-id>/calculator.xhtml</to-view-id>\n     </navigation-case>\n   
</navigation-rule>\n </faces-config>",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/jsf-cdi-and-ejb";
+      },
+      {
+        "name":"groovy-cdi",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/groovy-cdi";
+      },
+      {
+        "name":"cdi-ejbcontext-jaas",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/cdi-ejbcontext-jaas";
+      },
+      {
+        "name":"cdi-produces-disposes",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/cdi-produces-disposes";
+      },
+      {
+        "name":"cdi-interceptors",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/cdi-interceptors";
+      },
+      {
+        "name":"cdi-application-scope",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/cdi-application-scope";
+      },
+      {
+        "name":"cdi-request-scope",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/cdi-request-scope";
+      },
+      {
+        "name":"cdi-alternative-and-stereotypes",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/cdi-alternative-and-stereotypes";
+      },
+      {
+        "name":"cdi-produces-field",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/cdi-produces-field";
+      },
+      {
+        "name":"simple-cdi-interceptor",
+        "readme":"#Simple CDI Interceptor\n\nLet's write a simple application 
that would allow us to book tickets for a movie show. As with all applications, 
logging is one cross-cutting concern that we have. \n\n(Relevant snippets are 
inlined but you can check out the complete code, from the links 
provided)\n\nHow do we mark which methods are to be intercepted ? Wouldn't it 
be handy to annotate a method like \n\n    @Log\n    public void aMethod(){...} 
\n\nLet's create an  annotation that would \"mark\" a method for interception. 
\n\n    @InterceptorBinding\n    @Target({ TYPE, METHOD })\n    
@Retention(RUNTIME)\n    public @interface Log {\n    }\n\nSure, you haven't 
missed the @InterceptorBinding annotation above ! Now that our custom 
annotation is created, lets attach it (or to use a better term for it, \"bind 
it\" )\nto an interceptor. \n\nSo here's our logging interceptor. An 
@AroundInvoke method and we are almost done.\n\n    @Interceptor\n    @Log  
//binding the interceptor 
 here. now any method annotated with @Log would be intercepted by 
logMethodEntry\n    public class LoggingInterceptor {\n        @AroundInvoke\n  
      public Object logMethodEntry(InvocationContext ctx) throws Exception {\n  
          System.out.println(\"Entering method: \" + 
ctx.getMethod().getName());\n            //or logger.info statement \n          
  return ctx.proceed();\n        }\n    }\n\nNow the @Log annotation we created 
is bound to this interceptor.\n\nThat done, let's annotate at class-level or 
method-level and have fun intercepting ! \n\n    @Log\n    @Stateful\n    
public class BookShow implements Serializable {\n        private static final 
long serialVersionUID = 6350400892234496909L;\n        public List<String> 
getMoviesList() {\n            List<String> moviesAvailable = new 
ArrayList<String>();\n            moviesAvailable.add(\"12 Angry Men\");\n      
      moviesAvailable.add(\"Kings speech\");\n            return 
moviesAvailable;\n        }\n        public 
 Integer getDiscountedPrice(int ticketPrice) {\n            return ticketPrice 
- 50;\n        }\n        // assume more methods are present\n    }\n\nThe 
`@Log` annotation applied at class level denotes that all the methods should be 
intercepted with `LoggingInterceptor`.\n\nBefore we say \"all done\" there's 
one last thing we are left with ! To enable the interceptors ! \n\nLets quickly 
put up a [beans.xml file]\n\n    <beans>\n      <interceptors>\n        
<class>org.superbiz.cdi.bookshow.interceptors.LoggingInterceptor\n        
</class>\n      </interceptors>\n    </beans>\n\n in META-INF\n\n\nThose lines 
in beans.xml not only \"enable\" the interceptors, but also define the \"order 
of execution\" of the interceptors.\nBut we'll see that in another example on 
multiple-cdi-interceptors.\n\nFire up the test, and we should see a 'Entering 
method: getMoviesList' printed in the console.\n\n#Tests\n    Apache OpenEJB 
4.0.0-beta-2    build: 20111103-01:00\n    http://tomee.apache.org/\n 
    INFO - openejb.home = 
/media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors\n    
INFO - openejb.base = 
/media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors\n    
INFO - Using 'javax.ejb.embeddable.EJBContainer=true' \n    INFO - Configuring 
Service(id=Default Security Service, type=SecurityService, provider-id=Default 
Security Service)\n    INFO - Configuring Service(id=Default Transaction 
Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    
INFO - Found EjbModule in classpath: 
/media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors/target/classes\n
    INFO - Beginning load: 
/media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors/target/classes\n
    INFO - Configuring enterprise application: 
/media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors\n    
INFO - Configuring Service(id=Default Managed Container, type=Container, 
provider-id=Default Managed Container)\n    INFO - Au
 to-creating a container for bean cdi-simple-interceptors.Comp: 
Container(type=MANAGED, id=Default Managed Container)\n    INFO - Configuring 
Service(id=Default Stateful Container, type=Container, provider-id=Default 
Stateful Container)\n    INFO - Auto-creating a container for bean BookShow: 
Container(type=STATEFUL, id=Default Stateful Container)\n    INFO - Enterprise 
application 
\"/media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors\" 
loaded.\n    INFO - Assembling app: 
/media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors\n    
INFO - 
Jndi(name=\"java:global/cdi-simple-interceptors/BookShow!org.superbiz.cdi.bookshow.beans.BookShow\")\n
    INFO - Jndi(name=\"java:global/cdi-simple-interceptors/BookShow\")\n    
INFO - Created Ejb(deployment-id=BookShow, ejb-name=BookShow, container=Default 
Stateful Container)\n    INFO - Started Ejb(deployment-id=BookShow, 
ejb-name=BookShow, container=Default Stateful Container)\n    INFO - Deployed 
Application(pat
 h=/media/fthree/Workspace/open4/openejb/examples/cdi-simple-interceptors)\n    
Entering method: getMoviesList\n",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/simple-cdi-interceptor";
+      },
+      {
+        "name":"cdi-events",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-events";
+      },
+      {
+        "name":"cdi-realm",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/cdi-realm";
+      },
+      {
+        "name":"rest-cdi",
+        "readme":"No README.md yet, be the first to contribute one!",
+        "url":"https://github.com/apache/tomee/tree/master/examples/rest-cdi";
+      },
+      {
+        "name":"cdi-session-scope",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/cdi-session-scope";
+      }
+    ],
+    "ciphered":[
+      {
+        "name":"datasource-ciphered-password",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/datasource-ciphered-password";
+      }
+    ],
+    "client":[
+      {
+        "name":"client-resource-lookup-preview",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/client-resource-lookup-preview";
+      }
+    ],
+    "cmp2":[
+      {
+        "name":"simple-cmp2",
+        "readme":"Title: EJB 2.1 CMP EntityBeans (CMP2)\n\n\n\nOpenEJB, the 
EJB Container for TomEE and Geronimo,  does support all of EJB 1.1 to 3.1, 
including CMP2.\n\nThe CMP2 implementation is actually done by adapting the 
CMP2 bean into a JPA Entity dynamically at deploy time.\n\nAppropriate 
subclasses, a JPA persistence.xml file and a mapping.xml file are generated at 
deployment\ntime for the CMP2 EntityBeans and all the Entities will be then run 
on OpenJPA.  This innovative code\nhas been used as the sole CMP2 
implementation in Geronimo for its J2EE 1.4, JavaEE 5 and JavaEE 6 
certifications.\n\nThe persistence.xml and mapping.xml files generated at 
deploy time can be saved to disk and included\nin the application, allowing you 
to:\n\n - gain finer control over persistence options\n - slowly convert 
individual entities from CMP2 to JPA\n\nLet's see an example.\n\n# Movies 
application\n\nThe following is a basic EJB 2.1 application consisting of one 
CMP2 Entity.  For those that
  are reading this example\nout of curiosity and are not familiar with CMP2 or 
EJB 2.x, each CMP2 Entity is composed of two parts\n\n - **A Home interface** 
which has data access methods like \"find\", \"create\", and \"remove\".  This 
is essentially\n  what people use `@Stateless` beans for today, but with 
difference that you do not need to supply\n  the implementation of the 
interface -- the container will generate one for you.  This is partly what 
inspired\n  the creation of the OpenEJB-specific [Dynamic 
DAO](../dynamic-dao-implementation/README.html) feature.\n\n - **An abstract 
EntityBean class** which declares the persistent \"properties\" of the entity 
without actually\ndeclaring any fields.  It is the container's job to implement 
the actual methods and create the appropriate\nfields.  OpenEJB will implement 
this bean as a JPA `@Entity` bean.\n\nAs such a CMP2 EntityBean is really just 
the description of a persistent object and the description of a \ndata-access 
object.  There
  is no actual code to write.\n\nThe majority of work in CMP2 is done in the 
xml:\n\n - **ejb-jar.xml** mapping information, which describes the persistent 
properties of the entity and the queries\n for all *Home* find, create and 
remove methods.  This information will be converted by OpenEJB into\n a JPA 
mapping.xml file.  All queries in the cmp2 part of the ejb-jar.xml are 
converted \n into named queries in JPA and generally everything is converted to 
its JPA equivalent. \n\n## CMP2 EntityBean, MovieBean\n\n    package 
org.superbiz.cmp2;\n    \n    import javax.ejb.EntityBean;\n    \n    public 
abstract class MovieBean implements EntityBean {\n    \n        public 
MovieBean() {\n        }\n    \n        public Integer ejbCreate(String 
director, String title, int year) {\n            this.setDirector(director);\n  
          this.setTitle(title);\n            this.setYear(year);\n            
return null;\n        }\n    \n        public abstract java.lang.Integer 
getId();\n    \n    
     public abstract void setId(java.lang.Integer id);\n    \n        public 
abstract String getDirector();\n    \n        public abstract void 
setDirector(String director);\n    \n        public abstract String 
getTitle();\n    \n        public abstract void setTitle(String title);\n    \n 
       public abstract int getYear();\n    \n        public abstract void 
setYear(int year);\n    \n    }\n\n## CMP2 Home interface, Movies\n\n    
package org.superbiz.cmp2;\n    \n    import javax.ejb.CreateException;\n    
import javax.ejb.FinderException;\n    import java.util.Collection;\n    \n    
/**\n     * @version $Revision$ $Date$\n     */\n    interface Movies extends 
javax.ejb.EJBLocalHome {\n        Movie create(String director, String title, 
int year) throws CreateException;\n    \n        Movie findByPrimaryKey(Integer 
primarykey) throws FinderException;\n    \n        Collection<Movie> findAll() 
throws FinderException;\n    \n        Collection<Movie> findByDirector(String 
director)
  throws FinderException;\n    }\n\n## CMP2 mapping in ejb-jar.xml\n\n    
<ejb-jar>\n      <enterprise-beans>\n        <entity>\n          
<ejb-name>MovieBean</ejb-name>\n          
<local-home>org.superbiz.cmp2.Movies</local-home>\n          
<local>org.superbiz.cmp2.Movie</local>\n          
<ejb-class>org.superbiz.cmp2.MovieBean</ejb-class>\n          
<persistence-type>Container</persistence-type>\n          
<prim-key-class>java.lang.Integer</prim-key-class>\n          
<reentrant>false</reentrant>\n          <cmp-version>2.x</cmp-version>\n        
  <abstract-schema-name>MovieBean</abstract-schema-name>\n          
<cmp-field>\n            <field-name>id</field-name>\n          </cmp-field>\n  
        <cmp-field>\n            <field-name>director</field-name>\n          
</cmp-field>\n          <cmp-field>\n            
<field-name>year</field-name>\n          </cmp-field>\n          <cmp-field>\n  
          <field-name>title</field-name>\n          </cmp-field>\n          
<primkey-fiel
 d>id</primkey-field>\n          <query>\n            <query-method>\n          
    <method-name>findByDirector</method-name>\n              <method-params>\n  
              <method-param>java.lang.String</method-param>\n              
</method-params>\n            </query-method>\n            <ejb-ql>SELECT m 
FROM MovieBean m WHERE m.director = ?1</ejb-ql>\n          </query>\n          
<query>\n            <query-method>\n              
<method-name>findAll</method-name>\n              <method-params/>\n            
</query-method>\n            <ejb-ql>SELECT m FROM MovieBean as m</ejb-ql>\n    
      </query>\n        </entity>\n      </enterprise-beans>\n    </ejb-jar>\n  
  \n\n## openejb-jar.xml\n\n    <openejb-jar 
xmlns=\"http://www.openejb.org/xml/ns/openejb-jar-2.1\";>\n      
<enterprise-beans>\n        <entity>\n          
<ejb-name>MovieBean</ejb-name>\n          <key-generator 
xmlns=\"http://www.openejb.org/xml/ns/pkgen-2.1\";>\n            <uuid/>\n       
   </key-generator>\n  
       </entity>\n      </enterprise-beans>\n    </openejb-jar>\n    \n\n## 
MoviesTest\n\n    package org.superbiz.cmp2;\n    \n    import 
junit.framework.TestCase;\n    \n    import javax.naming.Context;\n    import 
javax.naming.InitialContext;\n    import java.util.Collection;\n    import 
java.util.Properties;\n    \n    /**\n     * @version $Revision: 607077 $ 
$Date: 2007-12-27 06:55:23 -0800 (Thu, 27 Dec 2007) $\n     */\n    public 
class MoviesTest extends TestCase {\n    \n        public void test() throws 
Exception {\n            Properties p = new Properties();\n            
p.put(Context.INITIAL_CONTEXT_FACTORY, 
\"org.apache.openejb.core.LocalInitialContextFactory\");\n            
p.put(\"movieDatabase\", \"new://Resource?type=DataSource\");\n            
p.put(\"movieDatabase.JdbcDriver\", \"org.hsqldb.jdbcDriver\");\n            
p.put(\"movieDatabase.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n    \n          
  p.put(\"movieDatabaseUnmanaged\", \"new://Resource?type=DataSource
 \");\n            p.put(\"movieDatabaseUnmanaged.JdbcDriver\", 
\"org.hsqldb.jdbcDriver\");\n            
p.put(\"movieDatabaseUnmanaged.JdbcUrl\", \"jdbc:hsqldb:mem:moviedb\");\n       
     p.put(\"movieDatabaseUnmanaged.JtaManaged\", \"false\");\n    \n           
 Context context = new InitialContext(p);\n    \n            Movies movies = 
(Movies) context.lookup(\"MovieBeanLocalHome\");\n    \n            
movies.create(\"Quentin Tarantino\", \"Reservoir Dogs\", 1992);\n            
movies.create(\"Joel Coen\", \"Fargo\", 1996);\n            
movies.create(\"Joel Coen\", \"The Big Lebowski\", 1998);\n    \n            
Collection<Movie> list = movies.findAll();\n            
assertEquals(\"Collection.size()\", 3, list.size());\n    \n            for 
(Movie movie : list) {\n                movies.remove(movie.getPrimaryKey());\n 
           }\n    \n            assertEquals(\"Movies.findAll()\", 0, 
movies.findAll().size());\n        }\n    }\n\n# Running\n\n    \n    
----------------------
 ---------------------------------\n     T E S T S\n    
-------------------------------------------------------\n    Running 
org.superbiz.cmp2.MoviesTest\n    Apache OpenEJB 4.0.0-beta-1    build: 
20111002-04:06\n    http://tomee.apache.org/\n    INFO - openejb.home = 
/Users/dblevins/examples/simple-cmp2/target\n    INFO - openejb.base = 
/Users/dblevins/examples/simple-cmp2/target\n    INFO - Configuring 
Service(id=Default Security Service, type=SecurityService, provider-id=Default 
Security Service)\n    INFO - Configuring Service(id=Default Transaction 
Manager, type=TransactionManager, provider-id=Default Transaction Manager)\n    
INFO - Configuring Service(id=movieDatabaseUnmanaged, type=Resource, 
provider-id=Default JDBC Database)\n    INFO - Configuring 
Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)\n   
 INFO - Found EjbModule in classpath: 
/Users/dblevins/examples/simple-cmp2/target/classes\n    INFO - Beginning load: 
/Users/dblevins/examples/simple-
 cmp2/target/classes\n    INFO - Configuring enterprise application: 
/Users/dblevins/examples/simple-cmp2/target/classpath.ear\n    INFO - 
Configuring Service(id=Default CMP Container, type=Container, 
provider-id=Default CMP Container)\n    INFO - Auto-creating a container for 
bean MovieBean: Container(type=CMP_ENTITY, id=Default CMP Container)\n    INFO 
- Configuring PersistenceUnit(name=cmp)\n    INFO - Adjusting PersistenceUnit 
cmp <jta-data-source> to Resource ID 'movieDatabase' from 'null'\n    INFO - 
Adjusting PersistenceUnit cmp <non-jta-data-source> to Resource ID 
'movieDatabaseUnmanaged' from 'null'\n    INFO - Enterprise application 
\"/Users/dblevins/examples/simple-cmp2/target/classpath.ear\" loaded.\n    INFO 
- Assembling app: /Users/dblevins/examples/simple-cmp2/target/classpath.ear\n   
 INFO - PersistenceUnit(name=cmp, 
provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider 
time 160ms\n    INFO - Jndi(name=MovieBeanLocalHome) --> Ejb(deployment-id=Mo
 vieBean)\n    INFO - 
Jndi(name=global/classpath.ear/simple-cmp2/MovieBean!org.superbiz.cmp2.Movies) 
--> Ejb(deployment-id=MovieBean)\n    INFO - 
Jndi(name=global/classpath.ear/simple-cmp2/MovieBean) --> 
Ejb(deployment-id=MovieBean)\n    INFO - Created Ejb(deployment-id=MovieBean, 
ejb-name=MovieBean, container=Default CMP Container)\n    INFO - Started 
Ejb(deployment-id=MovieBean, ejb-name=MovieBean, container=Default CMP 
Container)\n    INFO - Deployed 
Application(path=/Users/dblevins/examples/simple-cmp2/target/classpath.ear)\n   
 Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.919 sec\n    
\n    Results :\n    \n    Tests run: 1, Failures: 0, Errors: 0, Skipped: 
0\n\n# CMP2 to JPA\n\nAs mentioned OpenEJB will implement the abstract CMP2 
`EntityBean` as a JPA `@Entity`, create a `persistence.xml` file and convert 
all `ejb-jar.xml` mapping and queries to\na JPA `entity-mappings.xml` 
file.\n\nBoth of these files will be written to disk by setting the system 
property
  `openejb.descriptors.output` to `true`.  In the testcase\nabove, this can be 
done via the `InitialContext` parameters via code like this:\n\n    Properties 
p = new Properties();\n    p.put(Context.INITIAL_CONTEXT_FACTORY, 
\"org.apache.openejb.core.LocalInitialContextFactory\");\n\n    // setup the 
data sources as usual...\n\n    // write the generated descriptors\n    
p.put(\"openejb.descriptors.output\", \"true\");\n\n    Context context = new 
InitialContext(p);\n\nBelow are the generated `persistence.xml` and 
`mapping.xml` files for our CMP2 `EntityBean`\n\n## CMP2 to JPA generated 
persistence.xml file\n\n    <?xml version=\"1.0\" encoding=\"UTF-8\" 
standalone=\"yes\"?>\n    <persistence 
xmlns=\"http://java.sun.com/xml/ns/persistence\"; version=\"1.0\">\n        
<persistence-unit name=\"cmp\" transaction-type=\"JTA\">\n            
<jta-data-source>movieDatabase</jta-data-source>\n            
<non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>\n            
<mapping-fi
 le>META-INF/openejb-cmp-generated-orm.xml</mapping-file>\n            
<class>openejb.org.superbiz.cmp2.MovieBean</class>\n            <properties>\n  
              <property name=\"openjpa.jdbc.SynchronizeMappings\"\n             
   value=\"buildSchema(ForeignKeys=true, Indexes=false, 
IgnoreErrors=true)\"/>\n                <property name=\"openjpa.Log\" 
value=\"DefaultLevel=INFO\"/>\n            </properties>\n        
</persistence-unit>\n    </persistence>\n\nAll of this `persitence.xml` can be 
changed, however the `persistence-unit` must have the `name` fixed to 
`cmp`.\n\n## CMP2 to JPA generated mapping file\n\nNote that the 
`persistence.xml` above refers to this mappings file as 
`META-INF/openejb-cmp-generated-orm.xml`.  It is possible\nto rename this file 
to whatever name you prefer, just make sure to update the `<mapping-file>` 
element of the `cmp` persistence unit\naccordingly.\n\n    <?xml 
version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n    <entity-mappings 
xmlns=\
 "http://java.sun.com/xml/ns/persistence/orm\"; version=\"1.0\">\n        
<entity class=\"openejb.org.superbiz.cmp2.MovieBean\" name=\"MovieBean\">\n     
       <description>simple-cmp2#MovieBean</description>\n            <table/>\n 
           <named-query name=\"MovieBean.findByDirector(java.lang.String)\">\n  
              <query>SELECT m FROM MovieBean m WHERE m.director = ?1</query>\n  
          </named-query>\n            <named-query 
name=\"MovieBean.findAll\">\n                <query>SELECT m FROM MovieBean as 
m</query>\n            </named-query>\n            <attributes>\n               
 <id name=\"id\">\n                    <generated-value 
strategy=\"IDENTITY\"/>\n                </id>\n                <basic 
name=\"director\"/>\n                <basic name=\"year\"/>\n                
<basic name=\"title\"/>\n            </attributes>\n        </entity>\n    
</entity-mappings>\n",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/simple-cmp2";
+      }
+    ],
+    "codi":[
+      {
+        "name":"myfaces-codi-demo",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/myfaces-codi-demo";
+      }
+    ],
+    "component":[
+      {
+        "name":"component-interfaces",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/component-interfaces";
+      }
+    ],
+    "config":[
+      {
+        "name":"deltaspike-configproperty",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/deltaspike-configproperty";
+      },
+      {
+        "name":"webservice-ws-with-resources-config",
+        "readme":"No README.md yet, be the first to contribute one!",
+        
"url":"https://github.com/apache/tomee/tree/master/examples/webservice-ws-with-resources-config";
+      }
+    ],
+    "connectionfactory":[
+      {
+        "name":"injection-of-connectionfactory",
+        "readme":"Title: Injection Of Connectionfactory\n\n*Help us document 
this example! Click the blue pencil icon in the upper right to edit this 
page.*\n\n## Messages\n\n    package org.superbiz.injection.jms;\n    \n    
import javax.annotation.Resource;\n    import javax.ejb.Stateless;\n    import 
javax.jms.Connection;\n    import javax.jms.ConnectionFactory;\n    import 
javax.jms.DeliveryMode;\n    import javax.jms.JMSException;\n    import 
javax.jms.MessageConsumer;\n    import javax.jms.MessageProducer;\n    import 
javax.jms.Queue;\n    import javax.jms.Session;\n    import 
javax.jms.TextMessage;\n    \n    @Stateless\n    public class Messages {\n    
\n        @Resource\n        private ConnectionFactory connectionFactory;\n    
\n        @Resource\n        private Queue chatQueue;\n    \n    \n        
public void sendMessage(String text) throws JMSException {\n    \n            
Connection connection = null;\n            Session session = null;\n    \n      
      try {\n   
              connection = connectionFactory.createConnection();\n              
  connection.start();\n    \n                // Create a Session\n              
  session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);\n    \n  
              // Create a MessageProducer from the Session to the Topic or 
Queue\n                MessageProducer producer = 
session.createProducer(chatQueue);\n                
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);\n    \n                
// Create a message\n                TextMessage message = 
session.createTextMessage(text);\n    \n                // Tell the producer to 
send the message\n                producer.send(message);\n            } 
finally {\n                // Clean up\n                if (session != null) 
session.close();\n                if (connection != null) connection.close();\n 
           }\n        }\n    \n        public String receiveMessage() throws 
JMSException {\n    \n            Connection connection =
  null;\n            Session session = null;\n            MessageConsumer 
consumer = null;\n            try {\n                connection = 
connectionFactory.createConnection();\n                connection.start();\n    
\n                // Create a Session\n                session = 
connection.createSession(false, Session.AUTO_ACKNOWLEDGE);\n    \n              
  // Create a MessageConsumer from the Session to the Topic or Queue\n          
      consumer = session.createConsumer(chatQueue);\n    \n                // 
Wait for a message\n                TextMessage message = (TextMessage) 
consumer.receive(1000);\n    \n                return message.getText();\n      
      } finally {\n                if (consumer != null) consumer.close();\n    
            if (session != null) session.close();\n                if 
(connection != null) connection.close();\n            }\n        }\n    }\n\n## 
MessagingBeanTest\n\n    package org.superbiz.injection.jms;\n    \n    import 
junit.framewor
 k.TestCase;\n    \n    import javax.ejb.embeddable.EJBContainer;\n    import 
javax.naming.Context;\n    \n    public class MessagingBeanTest extends 
TestCase {\n    \n        public void test() throws Exception {\n    \n         
   final Context context = EJBContainer.createEJBContainer().getContext();\n    
\n            Messages messages = (Messages) 
context.lookup(\"java:global/injection-of-connectionfactory/Messages\");\n    
\n            messages.sendMessage(\"Hello World!\");\n            
messages.sendMessage(\"How are you?\");\n            
messages.sendMessage(\"Still spinning?\");\n    \n            
assertEquals(messages.receiveMessage(), \"Hello World!\");\n            
assertEquals(messages.receiveMessage(), \"How are you?\");\n            
assertEquals(messages.receiveMessage(), \"Still spinning?\");\n        }\n    
}\n\n# Running\n\n    \n    
-------------------------------------------------------\n     T E S T S\n    
-------------------------------------------------------\
 n    Running org.superbiz.injection.jms.MessagingBeanTest\n    Apache OpenEJB 
4.0.0-beta-1    build: 20111002-04:06\n    http://tomee.apache.org/\n    INFO - 
openejb.home = /Users/dblevins/examples/injection-of-connectionfactory\n    
INFO - openejb.base = /Users/dblevins/examples/injection-of-connectionfactory\n 
   INFO - Using 'javax.ejb.embeddable.EJBContainer=true'\n    INFO - 
Configuring Service(id=Default Security Service, type=SecurityService, 
provider-id=Default Security Service)\n    INFO - Configuring 
Service(id=Default Transaction Manager, type=TransactionManager, 
provider-id=Default Transaction Manager)\n    INFO - Found EjbModule in 
classpath: 
/Users/dblevins/examples/injection-of-connectionfactory/target/classes\n    
INFO - Beginning load: 
/Users/dblevins/examples/injection-of-connectionfactory/target/classes\n    
INFO - Configuring enterprise application: 
/Users/dblevins/examples/injection-of-connectionfactory\n    WARN - Method 
'lookup' is not available for 'javax.ann
 otation.Resource'. Probably using an older Runtime.\n    INFO - Configuring 
Service(id=Default Stateless Container, type=Container, provider-id=Default 
Stateless Container)\n    INFO - Auto-creating a container for bean Messages: 
Container(type=STATELESS, id=Default Stateless Container)\n    INFO - 
Configuring Service(id=Default JMS Connection Factory, type=Resource, 
provider-id=Default JMS Connection Factory)\n    INFO - Auto-creating a 
Resource with id 'Default JMS Connection Factory' of type 
'javax.jms.ConnectionFactory for 'Messages'.\n    INFO - Configuring 
Service(id=Default JMS Resource Adapter, type=Resource, provider-id=Default JMS 
Resource Adapter)\n    INFO - Auto-linking resource-ref 
'java:comp/env/org.superbiz.injection.jms.Messages/connectionFactory' in bean 
Messages to Resource(id=Default JMS Connection Factory)\n    INFO - Configuring 
Service(id=org.superbiz.injection.jms.Messages/chatQueue, type=Resource, 
provider-id=Default Queue)\n    INFO - Auto-creating a Resour
 ce with id 'org.superbiz.injection.jms.Messages/chatQueue' of type 
'javax.jms.Queue for 'Messages'.\n    INFO - Auto-linking resource-env-ref 
'java:comp/env/org.superbiz.injection.jms.Messages/chatQueue' in bean Messages 
to Resource(id=org.superbiz.injection.jms.Messages/chatQueue)\n    INFO - 
Configuring Service(id=Default Managed Container, type=Container, 
provider-id=Default Managed Container)\n    INFO - Auto-creating a container 
for bean org.superbiz.injection.jms.MessagingBeanTest: Container(type=MANAGED, 
id=Default Managed Container)\n    INFO - Enterprise application 
\"/Users/dblevins/examples/injection-of-connectionfactory\" loaded.\n    INFO - 
Assembling app: /Users/dblevins/examples/injection-of-connectionfactory\n    
INFO - 
Jndi(name=\"java:global/injection-of-connectionfactory/Messages!org.superbiz.injection.jms.Messages\")\n
    INFO - Jndi(name=\"java:global/injection-of-connectionfactory/Messages\")\n 
   INFO - Jndi(name=\"java:global/EjbModule1634151355/org.superbiz.
 injection.jms.MessagingBeanTest!org.super

<TRUNCATED>

Reply via email to