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: Problem Running quartz-app RAR JUnit Test
Date Mon, 04 Jan 2010 21:58:24 GMT
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.
>


Mime
View raw message