Added: tomee/site/trunk/generators/site-tomee-ng/examples.cache
URL:
http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/examples.cache?rev=1772522&view=auto
==============================================================================
--- tomee/site/trunk/generators/site-tomee-ng/examples.cache (added)
+++ tomee/site/trunk/generators/site-tomee-ng/examples.cache Sun Dec 4
11:01:40 2016
@@ -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 = \"[email protected]\";\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
Runtime.\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/Mo
vies\")\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
Database 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.transac
tion.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",
[... 1397 lines stripped ...]
Propchange: tomee/site/trunk/generators/site-tomee-ng/examples.cache
------------------------------------------------------------------------------
svn:executable = *
Added: tomee/site/trunk/generators/site-tomee-ng/pom.xml
URL:
http://svn.apache.org/viewvc/tomee/site/trunk/generators/site-tomee-ng/pom.xml?rev=1772522&view=auto
==============================================================================
--- tomee/site/trunk/generators/site-tomee-ng/pom.xml (added)
+++ tomee/site/trunk/generators/site-tomee-ng/pom.xml Sun Dec 4 11:01:40 2016
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.tomee</groupId>
+ <artifactId>site</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <name>Apache TomEE :: WebSite NG</name>
+
+ <properties>
+ <tomee.version>7.0.1</tomee.version>
+ <jbake.http>false</jbake.http>
+ <jbake.pdf>false</jbake.pdf>
+
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.asciidoctor</groupId>
+ <artifactId>asciidoctorj-pdf</artifactId>
+ <version>1.5.0-alpha.11</version>
+ </dependency>
+ <dependency>
+ <groupId>org.asciidoctor</groupId>
+ <artifactId>asciidoctorj</artifactId>
+ <version>1.5.4</version>
+ </dependency>
+ <dependency>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <version>1.16.6</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-json_1.0_spec</artifactId>
+ <version>1.0-alpha-1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.johnzon</groupId>
+ <artifactId>johnzon-jaxrs</artifactId>
+ <version>0.9.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-rs-client</artifactId>
+ <version>3.1.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tomee</groupId>
+ <artifactId>javaee-api</artifactId>
+ <version>7.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tomee</groupId>
+ <artifactId>tomee-embedded</artifactId>
+ <version>${tomee.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jbake</groupId>
+ <artifactId>jbake-core</artifactId>
+ <version>2.4.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>jul-to-slf4j</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.groovy</groupId>
+ <artifactId>groovy</artifactId>
+ <version>2.3.6</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.groovy</groupId>
+ <artifactId>groovy-templates</artifactId>
+ <version>2.3.6</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.5</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>exec-maven-plugin</artifactId>
+ <version>1.4.0</version>
+ <executions>
+ <execution>
+ <id>tomee-site</id>
+ <phase>compile</phase>
+ <goals>
+ <goal>java</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <includeProjectDependencies>true</includeProjectDependencies>
+ <mainClass>org.apache.tomee.website.JBake</mainClass>
+ <arguments>
+ <argument>${project.basedir}/src/main/jbake/</argument>
+
<argument>${project.build.directory}/${project.build.finalName}</argument>
+ <argument>${jbake.http}</argument>
+ <argument>${jbake.pdf}</argument>
+ </arguments>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Propchange: tomee/site/trunk/generators/site-tomee-ng/pom.xml
------------------------------------------------------------------------------
svn:executable = *