Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Cloud/Virtualization forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

OpenEJB, DI Overriding annotation with deployment descriptor

 
Markus Schmider
Ranch Hand
Posts: 128
1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I have learned that xml deployment descriptors override annotations.
So I am trying to use that feature to inject a mock implemantion into an EJB for testing:

I am using OpenEJB 3.1.2.



The CreditCardServiceBean gets injected into the TravelAgentBean

I try to override this in the ejb-jar.xml:


however testing the whole setup I see that still the CreditCardServiceBean
is injected.
Only when I remove the @EJB(beanName="CreditCardServiceBean") annotation the CreditCardServiceMock is injected.
I don't think thats the expected behavior.
Is something wrong with my deployment desprictor?
Any help would be appreciated.
 
Jaikiran Pai
Marshal
Pie
Posts: 10444
227
IntelliJ IDE Ubuntu
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Your ejb-ref-name should match the "name" of the @EJB (which by default is classname.fieldname). Try this:




ejb-jar.xml (note the ejb-ref-name now matches the name attribute of @EJB)
 
David Blevins
Greenhorn
Posts: 18
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Good catch, Jaikiran!

A nice override/debug option is to set 'openejb.descriptors.output' to 'true'. With that on the effective runtime descriptor is saved to the temp directory. Then you can take a look to see what your xml and annotations look like combined into the final "one true" descriptor.

 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic