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&amp;hl=en_US&amp;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
-
-
+