On Sep 30, 2009, at 9:05 AM, Luis Fernando Planella Gonzalez wrote:

Hi.
I've reported http://issues.apache.org/jira/browse/OPENEJB-1027 in may, which is modifying a bit the heuristics to resolve a data source by matching the app name (web app context in our case) if the data source has not been explicitly specified. This was previously discussed with David Blevings, and he suggested
that way.

Just to explain the use case: We're migrating cyclos (http://www.cyclos.org ), an open source struts / hibernate application to gwt / ejb3. Many people host several instances of the very same application in the same tomcat, and to keep supporting that it would be necessary to unpack, change every persistence.xml from each and repack each instance again. With this feature implemented, we
can just assume there will be a data source with the same name of the
application context and we're done, and our users will be happy :)

We can try patching ourselves, but we need some guidance on both fundamental
questions:
* Where is this heuristic implemented?
* How to get the current application name?

The logic is in:

http://svn.apache.org/repos/asf/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java

There's a pretty good test case for the persistence unit side of that logic here:

http://svn.apache.org/repos/asf/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/AutoConfigPersistenceUnitsTest.java

The javadoc was incorrect in some places, so I did a sweep through it and fixed it all for you.

I recommend starting with a copy of the AutoConfigPersistenceUnitsTest and expand it to always have two apps and spend a good amount of time covering all the scenarios (what happens when there are more apps than data sources, what if there are no data sources that match, etc.) The logic in AutoConfig is a bit of a beast.

Even if you aren't able to get the logic in, having a really good test case that covers more than just the "happy path" would be extremely valuable. For functionality like this I spend at least 60% of the time on the test case, so even having that would be a major help towards getting this feature in. The test case also kind of like a requirements doc, which is a cool thing when collaborating.


-David


Reply via email to