tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jonathan Gallimore <jonathan.gallim...@gmail.com>
Subject Re: Lookup EntityManager from Stateless EJB Session Bean
Date Wed, 29 Jul 2009 23:46:58 GMT
Hi Chan,

In the latest release I believe you can lookup the EntityManager using the
java:openejb context. For example for the movie-unit persistence unit in the
injection-of-entitymanager sample you could use:

context.lookup("java:openejb/PersistenceUnit/movie-unit");

to lookup the EntityManagerFactory. I tend to use some code like this to dig
around the java:openejb context to see what goodies are there:

           NamingEnumeration list = ctx.listBindings("java:openejb");
            while (list.hasMore()) {
                Binding item = (Binding) list.next();
                String className = item.getClassName();
                String name = item.getName();
                System.out.println(className + " " + name);
            }

I tried this using an embedded instance of OpenEJB, but I would imagine it
would work in Tomcat as well.

Hope that helps,

Jon



On Tue, Jul 28, 2009 at 9:44 PM, Chan Kelwin Hillary <ckelwin@gmail.com>wrote:

> Hi,
> I have a stateless EJB Session bean that successfully instantiates the
> EntityManger using the @PersistenceContext annotation. However, due to an
> issue, I need to get the EntityManager by lookup instead. I've tried the
> code below in the stateless session bean but it is giving me the error
> "Name
> Persistence is not bound in this Context". I've also placed
> the eclipselink.jar file into the %TOMCAT%\lib directory.
>
> try {
>    Context context = new InitialContext();
>    em = (javax.persistence.EntityManager) context.lookup("Persistence");
> } catch (NamingException e) {
>    System.out.println(e.getExplanation());
> }
>
> persistence.xml
> ===================
> <?xml version="1.0" encoding="windows-1252" ?>
> <persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
> http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
>             version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
>  <persistence-unit name="Persistence">
>    <provider>
>      org.eclipse.persistence.jpa.PersistenceProvider
>    </provider>
>    <jta-data-source>
>      java:openejb/Connector/Default JDBC Database
>    </jta-data-source>
>    <class>
>      com.testejb.model.ejb.dn.Dept
>    </class>
>    <properties>
>      <property name="eclipselink.target-database" value="Oracle10g"/>
>    </properties>
>  </persistence-unit>
> </persistence>
>
> I am running this on Tomcat-6.0.20 (extracted from the zip file instead of
> the executable) and the embedded OpenEJB. Can this be done? What am I
> missing?
>
> Thanks.
>
>
> --
> Best regards,
>
> Chan Kelwin
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message