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.