Oh... just found out I was actually very close!! Got Quartz working with this set of bundles (Gogo and quartz-sample, my bundle, are not required, of course): ID|State |Level|Name 0|Active | 0|System Bundle (4.4.0) 1|Active | 1|c3p0 (0.9.1.1) 2|Active | 1|log4j-over-slf4j (1.7.5) 3|Active | 1|Apache Felix Gogo Command (0.14.0) 4|Active | 1|Apache Felix Gogo Runtime (0.12.1) 5|Active | 1|Apache Felix Gogo Shell (0.10.0) 6|Active | 1|osgi.core (4.3.1.201210102023) 7|Active | 1|quartz (2.2.1) 8|Active | 1|quartz-sample (1.0.0) 9|Active | 1|slf4j-api (1.7.5) 10|Resolved | 1|slf4j-simple (1.7.5)
Removing mchange-commons-java does not seem to affect anything... the jobs I scheduled with Quartz actually ran! Hope this helps. Will clean up and publish this on GitHub... Renato > From: [email protected] > To: [email protected] > Subject: RE: Help in using your Quartz OSGi bundle > Date: Tue, 13 Oct 2015 08:07:07 +1100 > > > > > > The quartz bundle has the following imports: > Import-Package: com.mchange.v2.c3p0,commonj.work;resolution:=optional, > javax.ejb;resolution:=optional,javax.jms;resolution:=optional,javax.m > ail;resolution:=optional,javax.mail.internet;resolution:=optional,jav > ax.management,javax.management.openmbean,javax.naming,javax.servlet;r > esolution:=optional,javax.servlet.http;resolution:=optional,javax.sql > ;resolution:=optional,javax.transaction;resolution:=optional,javax.xm > l.bind,javax.xml.namespace,javax.xml.parsers,javax.xml.xpath,oracle.s > ql;resolution:=optional,org.jboss.logging;resolution:=optional,org.jb > oss.naming;resolution:=optional,org.jboss.system;resolution:=optional > ,org.quartz,org.quartz.core,org.quartz.impl.matchers,org.quartz.impl. > triggers,org.quartz.jobs;resolution:=optional,org.quartz.spi,org.slf4 > j;version="[1.6,2)",org.terracotta.toolkit;resolution:=optional,org.t > erracotta.toolkit.atomic;resolution:=optional,org.terracotta.toolkit. > builder;resolution:=optional,org.terracotta.toolkit.cluster;resolutio > n:=optional,org.terracotta.toolkit.collections;resolution:=optional,o > rg.terracotta.toolkit.concurrent.locks;resolution:=optional,org.terra > cotta.toolkit.config;resolution:=optional,org.terracotta.toolkit.inte > rnal;resolution:=optional,org.terracotta.toolkit.internal.concurrent. > locks;resolution:=optional,org.terracotta.toolkit.rejoin;resolution:= > optional,org.terracotta.toolkit.search;resolution:=optional,org.terra > cotta.toolkit.search.attribute;resolution:=optional,org.terracotta.to > olkit.store;resolution:=optional,org.w3c.dom,org.xml.sax,weblogic.jdb > c.jts;resolution:=optional,weblogic.jdbc.vendor.oracle;resolution:=op tional > > The required dependencies (not optional) are the following: > com.mchange.v2.c3p0 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > javax.managementjavax.management.openmbean > javax.naming > javax.xml.bind > javax.xml.namespace > javax.xml.parsers > javax.xml.xpath > org.quartz > org.quartz.core > org.quartz.impl.matchers > org.quartz.impl. triggers > org.quartz.spi > org.slf4 j;version="[1.6,2)" > org.w3c.dom > org.xml.sax > > > The first one, c3p0, comes from this artifact: > "c3p0:c3p0:0.9.1.1" > > Which is not a OSGi bundle. (the others, except quartz which comes from the > jar itself, don't seem to be a problem as the framework seems happy to > provide those). > > > I wrapped it in a bundle anyway using osgi-run and then, after installing > them in Felix, I found out we need some logging libraries, org.sfl4j.api, > org.apache.log4j, osg.slf4j.impl (ouch!) > > > A little bit painful to get this working. > > > After a little guesswork, I found these 2 bundles meet the logging demands: > > > osgiRuntime 'org.slf4j:slf4j-simple:1.7.5' > osgiRuntime "org.slf4j:log4j-over-slf4j:1.7.5" > > > But Felix threw horrible errors when I did this: > > > ERROR: Bundle slf4j.api [8] Error starting > file:/Users/renato/programming/projects/osgi-run/osgi-run-test/quartz-sample/build/osgi/bundle/slf4j-api-1.6.6.jar > (java.lang.ArrayIndexOutOfBoundsException: -1) > java.lang.ArrayIndexOutOfBoundsException: -1 > at java.util.ArrayList.elementData(ArrayList.java:418) > at java.util.ArrayList.remove(ArrayList.java:495) > at > org.apache.felix.framework.resolver.Candidates.prepare(Candidates.java:763) > at > org.apache.felix.framework.resolver.ResolverImpl.resolve(ResolverImpl.java:122) > at > org.apache.felix.framework.StatefulResolver.resolve(StatefulResolver.java:405) > at > org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3973) > at org.apache.felix.framework.Felix.startBundle(Felix.java:2043) > at > org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1297) > at > org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:304) > at java.lang.Thread.run(Thread.java:745) > ERROR: Bundle slf4j.api [9] Error starting > file:/Users/renato/programming/projects/osgi-run/osgi-run-test/quartz-sample/build/osgi/bundle/slf4j-api-1.7.5.jar > (java.lang.ArrayIndexOutOfBoundsException: -1) > java.lang.ArrayIndexOutOfBoundsException: -1 > at java.util.ArrayList.elementData(ArrayList.java:418) > at java.util.ArrayList.remove(ArrayList.java:495) > at > org.apache.felix.framework.resolver.Candidates.prepare(Candidates.java:763) > at > org.apache.felix.framework.resolver.ResolverImpl.resolve(ResolverImpl.java:122) > at > org.apache.felix.framework.StatefulResolver.resolve(StatefulResolver.java:405) > at > org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:3973) > at org.apache.felix.framework.Felix.startBundle(Felix.java:2043) > at > org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1297) > at > org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:304) > at java.lang.Thread.run(Thread.java:745) > ____________________________ > Welcome to Apache Felix Gogo > > > > Looks like a bug to me (probably fixed now, this is an older Felix version)... > > But I seem to have put two versions of slf4j in the classpath inadvertently.. > anyway, why wouldn't it work? I don't know... > So, after some more research, I found that in the docs of c3p0, they say this: > > > Just put the files lib/c3p0-0.9.5.1.jar and > lib/mchange-commons-java-0.2.10.jar in your application's effective CLASSPATH > > So I put this mchange-commons-java jar wrapped into an OSGi bundle in the > framework.... still, didn't work. > > > With Equinox I get this now: > > > Framework is launched. > > > id State Bundle > 0 ACTIVE org.eclipse.osgi_3.7.1.R37x_v20110808-1106 > 1 ACTIVE c3p0_0.9.1.1 > 2 ACTIVE log4j.over.slf4j_1.7.5 > 3 INSTALLED mchange-commons-java_0.2.10 > 4 ACTIVE slf4j.api_1.7.5 > Fragments=5 > 5 RESOLVED slf4j.simple_1.7.5 > Master=4 > > > > But still didn't work. Didn't even tell me what's wrong. > > > In Felix, at least I got this error: > > > org.osgi.framework.BundleException: Unresolved constraint in bundle > mchange-commons-java [3]: Unable to resolve 3.0: missing requirement [3.0] > osgi.wiring.package; (osgi.wiring.package=com.typesafe.config) > > So, apparently, we also need some TypeSafe stuff in the classpath :( > > > With this, I just give up. > > > I recommend you have a look at Atmandu Scheduler instead... It's made for > OSGi and apparently uses Quartz: > > > http://www.amdatu.org/components/scheduling.html > > > Good luck! > > > And.... I can totally understand how you might feel frustrated about this... > I thought I would manage to get this working in a few minutes... took me > hours trying, and nothing :( > > > What can we do?! > > > Regards, > > > Renato > > > > > > > Subject: Re: Help in using your Quartz OSGi bundle > > To: [email protected] > > From: [email protected] > > Date: Mon, 12 Oct 2015 14:32:04 +0200 > > > > Hi Pedro, > > > > such dependencies should be optional. Let me check the SMX quartz bundle > > around this. > > > > Regards > > JB > > > > On 10/11/2015 01:20 PM, Pedro Domingues wrote: > > > Greetings, > > > > > > Sorry for bothering you, but I would like to ask for your help with your > > > Quartz bundle. > > > > > > I am trying to install your Quartz OSGi bundle into my project: > > > > > > http://i.imgur.com/PKHnWIj.png > > > > > > However when I insert the bundle in my *Apache Felix* I keep getting the > > > unresolved dependencies error message like you can see here: > > > > > > >java -jar bin/felix.jar > > > ERROR: Bundle hydra.launcher [1] Error starting > > > file:/C:/code/hydra/felix/bundle/hydra.launcher-1.0.0-SNAPSHOT.jar > > > (org.osgi.fram > > > ework.BundleException: Unable to resolve > > > org.apache.servicemix.bundles.quartz [8](R 8.0): missing requirement > > > [org.apache.servicemix.bundles.quartz [8 > > > ](R 8.0)] osgi.wiring.package; (osgi.wiring.package=org.jboss.logging) > > > Unresolved requirements: [[org.apache.servicemix.bundles.quartz [8](R > > > 8.0)] osg > > > i.wiring.package; (osgi.wiring.package=org.jboss.logging)]) > > > org.osgi.framework.BundleException:*Unable to resolve > > > org.apache.servicemix.bundles.quartz [8](R 8.0): missing requirement* > > > [org.apache.servicemix.bund > > > les.quartz [8](R 8.0)] osgi.wiring.package; > > > (osgi.wiring.package=org.jboss.logging) Unresolved requirements: > > > [[*org.apache.servicemix.bundles.quartz* [8 > > > ](R 8.0)] osgi.wiring.package; (*osgi.wiring.package=org.jboss.logging*)] > > > at > > > org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4090) > > > at org.apache.felix.framework.Felix.startBundle(Felix.java:2111) > > > at > > > org.apache.felix.framework.BundleImpl.start(BundleImpl.java:977) > > > at > > > org.apache.felix.framework.BundleImpl.start(BundleImpl.java:964) > > > at hydra.launcher.Launcher.installStart(Launcher.java:78) > > > > > > If I try to discard this dependency manually in your bundle's manifest I > > > keep getting other dependencies such as oracle.sql and so on... It is a > > > true dependency hell. > > > > > > However I do not need to use SQL nor JBOSS, I just want to use Quartz. > > > Is there any way I can solve this? Do I really need to include the > > > thousand transitive dependencies manually, which I will probably never > > > use but since these manifests are automatically generated they include > > > them anyways? > > > > > > This is the one thing that makes OSGi hard to use... > > > > > > Thanks! > > > > -- > > Jean-Baptiste Onofré > > [email protected] > > http://blog.nanthrax.net > > Talend - http://www.talend.com > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [email protected] > > For additional commands, e-mail: [email protected] > > >

