You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by vi...@apache.org on 2012/04/26 14:05:00 UTC
svn commit: r1330797 -
/openejb/site/trunk/content/injection-of-entitymanager-example.mdtext
Author: vishwanathk
Date: Thu Apr 26 12:04:59 2012
New Revision: 1330797
URL: http://svn.apache.org/viewvc?rev=1330797&view=rev
Log:
correct injection of entity manager doc
Modified:
openejb/site/trunk/content/injection-of-entitymanager-example.mdtext
Modified: openejb/site/trunk/content/injection-of-entitymanager-example.mdtext
URL: http://svn.apache.org/viewvc/openejb/site/trunk/content/injection-of-entitymanager-example.mdtext?rev=1330797&r1=1330796&r2=1330797&view=diff
==============================================================================
--- openejb/site/trunk/content/injection-of-entitymanager-example.mdtext (original)
+++ openejb/site/trunk/content/injection-of-entitymanager-example.mdtext Thu Apr 26 12:04:59 2012
@@ -1,9 +1,10 @@
Title: Injection of EntityManager Example
+
<a name="InjectionofEntityManagerExample-Overview"></a>
# Overview
-{span:style=float: right; margin-left: 20px;}
-{html}
+
+
<object width="400" height="250"><param name="movie"
value="http://www.youtube.com/v/s4uiIoAehgQ?fs=1&hl=en_US&rel=0"></param><param
@@ -13,9 +14,7 @@ src="http://www.youtube.com/v/s4uiIoAehg
type="application/x-shockwave-flash" allowscriptaccess="always"
allowfullscreen="true" width="400" height="250"></embed></object>
-{html}
-{span}
-{div}
+
Shows use of *@PersistenceContext* to have an *EntityManager* with an
*EXTENDED* persistence context injected into a @Stateful bean. An EJB 3
@@ -23,99 +22,195 @@ Shows use of *@PersistenceContext* to ha
data to a database.
If you need to use a TRANSACTION persistence context, see [this example](testing-transactions-example.html)
-.
-
-_The source for this example is in the "injection-of-entitymanager"
-directory located in the [openejb-examples.zip](openejb:download.html)
- available on the download page._
-
-{div}
-{div:style=clear:both;}{div}
-
-<a name="InjectionofEntityManagerExample-TheCode"></a>
-# The Code
-<a name="InjectionofEntityManagerExample-TheStatefulbean"></a>
-## The Stateful bean
-{snippet:id=code|url=openejb3/examples/injection-of-entitymanager/src/main/java/org/superbiz/injection/jpa/MoviesImpl.java|lang=java}
-<a name="InjectionofEntityManagerExample-TheEntitybean"></a>
-## The Entity bean
-{snippet:id=code|url=openejb3/examples/injection-of-entitymanager/src/main/java/org/superbiz/injection/jpa/Movie.java|lang=java}
-
-<a name="InjectionofEntityManagerExample-Thepersistenceunit"></a>
-## The persistence unit
-
-{snippet:id=code|url=openejb3/examples/injection-of-entitymanager/src/main/resources/META-INF/persistence.xml|lang=xml}
<a name="InjectionofEntityManagerExample-Writingaunittestfortheexample"></a>
# Writing a unit test for the example
-{snippet:id=code|url=openejb3/examples/injection-of-entitymanager/src/test/java/org/superbiz/injection/jpa/MoviesTest.java|lang=java}
-
Curious on the InitialContext parameters used? See the [Injection of DataSource Example](injection-of-datasource-example.html)
for an explanation of how any Resource can be configured via properties in
the TestCase itself or via an openejb.xml file.
-<a name="InjectionofEntityManagerExample-Running"></a>
-# Running
+## Movie
+
+ package org.superbiz.injection.jpa;
+ //START SNIPPET: code
+
+ import javax.persistence.Entity;
+
+ @Entity
+ public class Movie {
+
+ private String director;
+ private String title;
+ private int year;
+
+ public Movie() {
+ }
+
+ public Movie(String director, String title, int year) {
+ this.director = director;
+ this.title = title;
+ this.year = year;
+ }
+
+ public String getDirector() {
+ return director;
+ }
+
+ public void setDirector(String director) {
+ this.director = director;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public int getYear() {
+ return year;
+ }
+
+ public void setYear(int year) {
+ this.year = year;
+ }
+ }
+
+## Movies
+
+ package org.superbiz.injection.jpa;
+
+ //START SNIPPET: code
+
+ import javax.ejb.Stateful;
+ import javax.persistence.EntityManager;
+ import javax.persistence.PersistenceContext;
+ import javax.persistence.PersistenceContextType;
+ import javax.persistence.Query;
+ import java.util.List;
+
+ @Stateful
+ public class Movies {
+
+ @PersistenceContext(unitName = "movie-unit", type = PersistenceContextType.EXTENDED)
+ private EntityManager entityManager;
+
+ public void addMovie(Movie movie) throws Exception {
+ entityManager.persist(movie);
+ }
+
+ public void deleteMovie(Movie movie) throws Exception {
+ entityManager.remove(movie);
+ }
+
+ public List<Movie> getMovies() throws Exception {
+ Query query = entityManager.createQuery("SELECT m from Movie as m");
+ return query.getResultList();
+ }
+ }
+
+## persistence.xml
-Running the example is fairly simple. In the "injection-of-entitymanager"
-directory of the [examples zip](openejb:download.html)
-, just run:
+ <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
+
+ <persistence-unit name="movie-unit">
+ <jta-data-source>movieDatabase</jta-data-source>
+ <non-jta-data-source>movieDatabaseUnmanaged</non-jta-data-source>
+ <class>org.superbiz.injection.jpa.Movie</class>
+
+ <properties>
+ <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
+ </properties>
+ </persistence-unit>
+ </persistence>
+ <!-- END SNIPPET: code -->
+
-$ mvn clean install
+## MoviesTest
-Which should create output like the following.
+ package org.superbiz.injection.jpa;
+
+ import junit.framework.TestCase;
+
+ import javax.ejb.embeddable.EJBContainer;
+ import javax.naming.Context;
+ import java.util.List;
+ import java.util.Properties;
+
+ //START SNIPPET: code
+ public class MoviesTest extends TestCase {
+
+ public void test() throws Exception {
+
+ final Properties p = new Properties();
+ p.put("movieDatabase", "new://Resource?type=DataSource");
+ p.put("movieDatabase.JdbcDriver", "org.hsqldb.jdbcDriver");
+ p.put("movieDatabase.JdbcUrl", "jdbc:hsqldb:mem:moviedb");
+
+ final Context context = EJBContainer.createEJBContainer(p).getContext();
+
+ Movies movies = (Movies) context.lookup("java:global/injection-of-entitymanager/Movies");
+
+ movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
+ movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
+ movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));
+
+ List<Movie> list = movies.getMovies();
+ assertEquals("List.size()", 3, list.size());
+
+ for (Movie movie : list) {
+ movies.deleteMovie(movie);
+ }
+
+ assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
+ }
+ }
+# Running
+
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running org.superbiz.injection.jpa.MoviesTest
- Apache OpenEJB 3.0 build: 20080408-04:13
+ Apache OpenEJB 4.0.0-beta-1 build: 20111002-04:06
http://openejb.apache.org/
- INFO - openejb.home =
-/Users/dblevins/work/openejb-3.0/examples/injection-of-entitymanager
- INFO - openejb.base =
-/Users/dblevins/work/openejb-3.0/examples/injection-of-entitymanager
- INFO - Configuring Service(id=Default Security Service,
-type=SecurityService, provider-id=Default Security Service)
- INFO - Configuring Service(id=Default Transaction Manager,
-type=TransactionManager, provider-id=Default Transaction Manager)
- INFO - Configuring Service(id=movieDatabaseUnmanaged, type=Resource,
-provider-id=Default JDBC Database)
- INFO - Configuring Service(id=movieDatabase, type=Resource,
-provider-id=Default JDBC Database)
- INFO - Configuring Service(id=Default JDK 1.3 ProxyFactory,
-type=ProxyFactory, provider-id=Default JDK 1.3 ProxyFactory)
- INFO - Found EjbModule in classpath:
-/Users/dblevins/work/openejb-3.0/examples/injection-of-entitymanager/target/classes
- INFO - Configuring app:
-/Users/dblevins/work/openejb-3.0/examples/injection-of-entitymanager/target/classes
- INFO - Configuring Service(id=Default Stateful Container, type=Container,
-provider-id=Default Stateful Container)
- INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL,
-id=Default Stateful Container)
+ INFO - openejb.home = /Users/dblevins/examples/injection-of-entitymanager
+ INFO - openejb.base = /Users/dblevins/examples/injection-of-entitymanager
+ INFO - Using 'javax.ejb.embeddable.EJBContainer=true'
+ INFO - Configuring Service(id=Default Security Service, type=SecurityService, provider-id=Default Security Service)
+ INFO - Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
+ INFO - Configuring Service(id=movieDatabase, type=Resource, provider-id=Default JDBC Database)
+ INFO - Found EjbModule in classpath: /Users/dblevins/examples/injection-of-entitymanager/target/classes
+ INFO - Beginning load: /Users/dblevins/examples/injection-of-entitymanager/target/classes
+ INFO - Configuring enterprise application: /Users/dblevins/examples/injection-of-entitymanager
+ INFO - Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container)
+ INFO - Auto-creating a container for bean Movies: Container(type=STATEFUL, id=Default Stateful Container)
+ INFO - Configuring Service(id=Default Managed Container, type=Container, provider-id=Default Managed Container)
+ INFO - Auto-creating a container for bean org.superbiz.injection.jpa.MoviesTest: Container(type=MANAGED, id=Default Managed Container)
INFO - Configuring PersistenceUnit(name=movie-unit)
- INFO - Loaded Module:
-/Users/dblevins/work/openejb-3.0/examples/injection-of-entitymanager/target/classes
- INFO - Assembling app:
-/Users/dblevins/work/openejb-3.0/examples/injection-of-entitymanager/target/classes
- INFO - PersistenceUnit(name=movie-unit,
-provider=org.apache.openjpa.persistence.PersistenceProviderImpl)
- ERROR - JAVA AGENT NOT INSTALLED. The JPA Persistence Provider requested
-installation of a ClassFileTransformer which requires
- a JavaAgent. See http://openejb.apache.org/3.0/javaagent.html
- INFO - Jndi(name=MoviesLocal) --> Ejb(deployment-id=Movies)
- INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default
-Stateful Container)
- INFO - Deployed
-Application(path=/Users/dblevins/work/openejb-3.0/examples/injection-of-entitymanager/target/classes)
- Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.095 sec
+ INFO - Auto-creating a Resource with id 'movieDatabaseNonJta' of type 'DataSource for 'movie-unit'.
+ INFO - Configuring Service(id=movieDatabaseNonJta, type=Resource, provider-id=movieDatabase)
+ INFO - Adjusting PersistenceUnit movie-unit <non-jta-data-source> to Resource ID 'movieDatabaseNonJta' from 'movieDatabaseUnmanaged'
+ INFO - Enterprise application "/Users/dblevins/examples/injection-of-entitymanager" loaded.
+ INFO - Assembling app: /Users/dblevins/examples/injection-of-entitymanager
+ INFO - PersistenceUnit(name=movie-unit, provider=org.apache.openjpa.persistence.PersistenceProviderImpl) - provider time 462ms
+ INFO - Jndi(name="java:global/injection-of-entitymanager/Movies!org.superbiz.injection.jpa.Movies")
+ INFO - Jndi(name="java:global/injection-of-entitymanager/Movies")
+ INFO - Jndi(name="java:global/EjbModule1461341140/org.superbiz.injection.jpa.MoviesTest!org.superbiz.injection.jpa.MoviesTest")
+ INFO - Jndi(name="java:global/EjbModule1461341140/org.superbiz.injection.jpa.MoviesTest")
+ INFO - Created Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+ INFO - Created Ejb(deployment-id=org.superbiz.injection.jpa.MoviesTest, ejb-name=org.superbiz.injection.jpa.MoviesTest, container=Default Managed Container)
+ INFO - Started Ejb(deployment-id=Movies, ejb-name=Movies, container=Default Stateful Container)
+ INFO - Started Ejb(deployment-id=org.superbiz.injection.jpa.MoviesTest, ejb-name=org.superbiz.injection.jpa.MoviesTest, container=Default Managed Container)
+ INFO - Deployed Application(path=/Users/dblevins/examples/injection-of-entitymanager)
+ Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.301 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
-
-
+