persistence@glassfish.java.net

Re: using toplink in CMP

From: Sanjeeb Kumar Sahoo <Sanjeeb.Sahoo_at_Sun.COM>
Date: Mon, 05 Mar 2007 09:45:01 +0530

In addition to following Wonseok's recommendation, I suggest you do some
search in the web for "Java Persistence API + Java EE + GlassFish +
sample" and take a look at some sample applications.

Thanks,
Sahoo
Wonseok Kim wrote:
> Hi sud,
> First of all, what you are trying to use is not CMP technology, it's
> Java Persistence(aka. JPA) and it's totally different from CMP.
> In order to inject EntityManager to a class, the class should be an
> Session Bean(Stateless or Stateful). Java EE container doesn't inject
> anything on non-managed POJO classes. So you'd better make your DAO
> stateless session bean by putting @Stateless annotation on top of the
> class.
>
> -Wonseok
>
> On 3/4/07, *sudhakar* <sudhakar_at_co.brazos.tx.us
> <mailto:sudhakar_at_co.brazos.tx.us>> wrote:
>
> I'm attempting to use toplink in CMP within Glassfish and am unable to
> figure out the right coonfiguration. Here's what I have so far:
>
> 1. Defined a connection pool called MyPool in Glassfish admin
> console
> 2. Defined a jdbc resource called jdbc/MyDB that uses MyPool in
> Glassfish admin console
> 3. In my ejb project I created a src/META-INF/persistence.xml file
> that
> looks like below:
>
> <persistence>
> <persistence-unit name="myPU" transaction-type="JTA">
> <jta-data-source>jdbc/MyDB</jta-data-source>
> <properties>
> <property name=" toplink.logging.level" value="FINEST" />
> </properties>
> </persistence-unit>
> </persistence>
>
> 4. I then created a PersonDAO class as below:
>
> public class PersonDAO {
>
> protected EntityManagerFactory emf;
>
> @PersistenceContext(unitName = "myPU")
> protected EntityManager em;
>
> public Person findById(int id) {
> return em.find(Person.class , id);
> }
> }
>
> When I attempt to use this I get a NPE at the em.find line in
> PersonDAO
>
> Caused by: java.lang.NullPointerException
> at test.PersonDAO.findById(PersonDAO.java:17)
>
> I was hoping someone can point in the right direction on how to
> get this
> working. It looks like the em object is null. Isn't CMP supposed
> to take
> care of creating this object using dependency injection?
>
> Thanks in advance for any help.
>
> -sud
>
>