I uploaded the patch. Sorry for the delay. Cheers Christian.
David Blevins wrote: > > Definitely a bug and *thank you* for digging around and finding it! > Very appreciated! It's open source and we're all volunteers, so maybe > closer to the truth is my wife appreciates it ;) > > Anyway, if you can attach a patch here, I'll commit it and mark you > down as the "fixer" > > https://issues.apache.org/jira/browse/OPENEJB-1127 > > Happy new year! > > -David > > On Jan 1, 2010, at 11:20 PM, thabach wrote: > >> >> Heya David >> >> I investigated some more and observed that a resource adapter >> project - a >> non packed Maven module, like the one in the quartz-app, to be >> precise - is >> detected as a Connector module, but does NOT get loaded. A top-level >> "mvn >> install" only works for the quartz-app as Maven uses the jar'ed >> quartz-ra as >> a dependency, which does get loaded by OpenEJB. >> >> I added the following ra.xml specific code, similar to the one for >> ejb-jar.xml and applicaiton.xml in >> org.apache.openejb.config.DeploymentsResolver: >> >> public static void loadFrom(Deployments dep, FileUtils path, >> List<String> >> jarList) { >> >> ...... >> >> //////////////////////////////// >> // >> // Unpacked "Jar" directory with descriptor >> // >> //////////////////////////////// >> File ejbJarXml = new File(dir, "META-INF" + File.separator + >> "ejb-jar.xml"); >> if (ejbJarXml.exists()) { >> if (!jarList.contains(dir.getAbsolutePath())) { >> jarList.add(dir.getAbsolutePath()); >> } >> return; >> } >> >> File appXml = new File(dir, "META-INF" + File.separator + >> "application.xml"); >> if (appXml.exists()) { >> if (!jarList.contains(dir.getAbsolutePath())) { >> jarList.add(dir.getAbsolutePath()); >> } >> return; >> } >> >> File raXml = new File(dir, "META-INF" + File.separator + >> "ra.xml"); >> if (raXml.exists()) { >> if (!jarList.contains(dir.getAbsolutePath())) { >> jarList.add(dir.getAbsolutePath()); >> } >> return; >> } >> >> and now it all works fine ! >> >> So to me this looks like something that got forgotten. Shall I raise >> a JIRA >> for this and do you want me to supply a patch with the above ? >> >> Regards and a happy new year, Christian. >> >> >> thabach wrote: >>> >>> I tried what you suggested, had to actually try with >>> getClass().getClassLoader().getSystemResource("META-INF/ra.xml") to >>> succeed, but the ra.xml is on the Classpath. >>> >>> The quartz-beans JUnit Test in Eclipse runs fine as soon as I move >>> the >>> ra.xml from the quartz-ra module to the quartz-beans module, but >>> only as >>> long as I do not put an ejb-jar.xml into the src/main/resources/ >>> META-INF >>> as well. >>> >>> It really seems that it all depends on some ordering constraint, >>> does one >>> have to manage rar before ejb deployment somehow ? >>> >>> Cheers Christian. >>> >>> >>> >>> David Blevins wrote: >>>> >>>> >>>> On Oct 27, 2009, at 12:54 AM, thabach wrote: >>>> >>>>> >>>>> Heya >>>>> >>>>> I am investigating RAR support in OpenEJB and was playing with the >>>>> quartz-app from some earlier post ( >>>>> http://www.nabble.com/need-help-getting-quartz-ra.rar-file-to-deploy-td18531000.html#a18538001 >>>>> http://www.nabble.com/need-help-getting-quartz-ra.rar-file-to-deploy-td18531000.html#a18538001 >>>>> ). >>>>> >>>>> When running a top-level mvn clean install the tests are executed >>>>> fine. >>>>> Running the quartz-beans module test from within Eclipse as a JUnit >>>>> test, >>>>> leads to a problem in matching the message listener interface of >>>>> the >>>>> MDB >>>>> against the message listener interface of the automatically >>>>> deployed >>>>> MdbContainer and yields this: >>>>> >>>>> org.apache.openejb.OpenEJBException: Creating application failed: >>>>> classpath.ear: Error deploying 'TimerJob'. Exception: class >>>>> org.apache.openejb.OpenEJBException: Deployment 'TimerJob' has >>>>> message >>>>> listener interface org.quartz.Job but this MDB container only >>>>> supports >>>>> interface javax.jms.MessageListener: Deployment 'TimerJob' has >>>>> message >>>>> listener interface org.quartz.Job but this MDB container only >>>>> supports >>>>> interface javax.jms.MessageListener >>>> >>>> It seems there's something about the way the Eclipse project is >>>> setup >>>> that does not match the Maven setup. If Eclipse isn't including the >>>> META-INF/ra.xml file in the classpath, then OpenEJB will not be able >>>> to see and deploy the resource adapter and create the required MDB >>>> container. >>>> >>>> Try a little test code like this to verify your Eclipse setup: >>>> >>>> import junit.framework.TestCase; >>>> >>>> import java.net.URL; >>>> >>>> public class ClasspathTest extends TestCase { >>>> >>>> public void test() throws Exception { >>>> >>>> URL raXml = this.getClass().getResource("META-INF/ >>>> ra.xml"); >>>> >>>> assertNotNull("There is no resource adapter in the >>>> classpath", raXml); >>>> } >>>> } >>>> >>>> >>>> Hope that helps! >>>> >>>> -David >>>> >>>> >>>> >>> >>> >> >> -- >> View this message in context: >> http://n4.nabble.com/Problem-Running-quartz-app-RAR-JUnit-Test-tp979722p991998.html >> Sent from the OpenEJB User mailing list archive at Nabble.com. >> > > > -- View this message in context: http://n4.nabble.com/Problem-Running-quartz-app-RAR-JUnit-Test-tp979722p1016620.html Sent from the OpenEJB User mailing list archive at Nabble.com.
