tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Blevins <david.blev...@visi.com>
Subject Re: How to confiigure an container managed EntityManger in an embeded server?
Date Mon, 27 Aug 2007 06:59:01 GMT

On Aug 26, 2007, at 6:44 PM, Paul Spencer wrote:

> I would like to use OpenEJB in the jUnit tests of a maven based  
> EJB3 project.  Currently the container managed entity manager,  
> which is injected via the @PersistenceContext annotation, is null.   
> I am using OpenJPA for my JPA implementation.

One thing to verify is that you've filled in the "unitName" attribute  
of the PersistenceContext annotation and that the unit name matches a  
persistence unit declared in a META-INF/persistence.xml in the  
application jar.

We do validate several things about your app, but this particular one  
is still on the todo list:
   http://issues.apache.org/jira/browse/OPENEJB-453

Even still it should result in failure later.  Hopefully we can find it.

> The unit test logs the OpenEJB startup, ending with "INFO - OpenEJB  
> Ready.", and I can get the entityManager by creating an  
> EntityMangerFactory then creating the EntityManager from the factory.
>
> I suspect a configuration error on my part.
> Where should I look?

If you're persistence unit was not found when we attempted to resolve  
the reference (created via the annotation) during the time the bean  
as loading, we'd throw one of these which should be logged and would  
fail your app:

   throw new IllegalArgumentException("Persistence unit " +  
contextInfo.persistenceUnitName + " for persistence-context-ref " +
                         contextInfo.referenceName + " not found");

If we attempted to find something for injection and it mysteriously  
wasn't there, we'd log one of these:

   logger.warning("Injection data not found in enc: jndiName='" +  
injection.getJndiName() + "', target=" + injection.getTarget() + "/"  
+ injection.getName());

If something failed to be injected (missing setter perhaps), we'd log  
one of these:

   logger.warning("Injection: No such property '" + property + "' in  
class " + beanClass.getName());


We do have a rather large example (our test suite) that has injection  
of PersistenceContext among other things:

http://svn.apache.org/repos/asf/openejb/trunk/openejb3/itests/openejb- 
itests-beans/src/main/java/org/apache/openejb/test/stateless/ 
AnnotatedFieldInjectionStatelessBean.java
http://svn.apache.org/repos/asf/openejb/trunk/openejb3/itests/openejb- 
itests-beans/src/main/resources/META-INF/

Definitely let us know even if you find the issue as we really want  
everything to be bullet proof.  No one should be left scratching  
their head even if it is there fault -- that should be one of the  
advantages of embedded testing.

-David


Mime
View raw message