Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
h1. 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 name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/s4uiIoAehgQ?fs=1&amp;hl=en_US&amp;rel=0" 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 *@Entity* bean is used with the EntityManager to create, persist and merge data to a database.

If you need to use a TRANSACTION persistence context, see [this example|Testing Transactions Example].

_The source for this example is in the 

Overview

Shows use of @PersistenceContext to have an EntityManager with an EXTENDED persistence context injected into a @Stateful bean. An EJB 3 @Entity bean is used with the EntityManager to create, persist and merge data to a database.

If you need to use a TRANSACTION persistence context, see this example.

...

"injection-of-entitymanager" directory located in the [openejb-examples.zip|OPENEJB:Download] available on the download page.

...

The Code

The Stateful bean

Wiki Markup
_

{div}
{div:style=clear:both;}{div}

h1. The Code

h2. The Stateful bean
{snippet:id=code|url=openejb3/examples/injection-of-entitymanager/src/main/java/org/superbiz/injection/jpa/MoviesImpl.java|lang=java}

h2. The Entity

...

Wiki Markup
 bean
{snippet:id=code|url=openejb3/examples/injection-of-entitymanager/src/main/java/org/superbiz/injection/jpa/Movie.java|lang=java}

h2. The persistence

...

Wiki Markup
 unit

{snippet:id=code|url=openejb3/examples/injection-of-entitymanager/src/main/resources/META-INF/persistence.xml|lang=xml}

h1. Writing a unit test for the

...

Wiki Markup
 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] for an explanation of how any Resource can be configured via properties in the TestCase itself or via an openejb.xml file

...

Running

...

.

h1.  Running

Running the example is fairly simple.  In the "injection-of-entitymanager" directory of the [examples zip|OPENEJB:Download], just run:

...



$ mvn clean install

...



Which should create output like the following.

...



{noformat
}
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running org.superbiz.injection.jpa.MoviesTest
Apache OpenEJB 3.0    build: 20080408-04:13
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 - 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

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
{noformat}