On 8 Nov 2004, at 13:55, Unico Hommes wrote:
What if, instead of using the short names <datasources> and <jdbc>, you declare the datasource like so:
<component role="org.apache.avalon.excalibur.datasource.DataSourceComponent/ quartz"
class="org.apache.avalon.excalibur.datasource.ResourceLimitingJdbcDataS ource">
<pool-controller max="10" min="5"/>
<dburl>jdbc:postgresql://localhost/quartz</dburl>
<user>cocoon</user>
<password>*************</password>
</component>
I was under the impression that ECM would transparently map the short name form and the above form to the same lookup semantics. (serviceManager.lookup(DataSourceComponent.ROLE + "/quartz")) Perhaps I was wrong and it is only Fortress that does that.
OK, that moved the problem on a bit, it seems to find the datasource when setup like this, but the next exception I get is this:
Invalid delegate class: org.quartz.impl.jdbcjobstore.PostreSQLDelegate
ERROR (2004-11-08) 14:34.33:068 [access] (Unknown-URI) Unknown-thread/CocoonServlet: Exception reloading
org.apache.avalon.framework.configuration.ConfigurationException: Could not instantiate DriverDelegate class org.quartz.impl.jdbcjobstore.PostreSQLDelegate
at org.apache.cocoon.components.cron.QuartzJobScheduler.createJobStore(Quar tzJobScheduler.java:759)
at org.apache.cocoon.components.cron.QuartzJobScheduler.initialize(QuartzJo bScheduler.java:321)
at org.apache.avalon.framework.container.ContainerUtil.initialize(Container Util.java:283)
at org.apache.avalon.excalibur.component.DefaultComponentFactory.newInstanc e(DefaultComponentFactory.java:277)
at org.apache.avalon.excalibur.component.ThreadSafeComponentHandler.initial ize(ThreadSafeComponentHandler.java:108)
at org.apache.avalon.excalibur.component.ExcaliburComponentManager.initiali ze(ExcaliburComponentManager.java:522)
at org.apache.cocoon.components.CocoonComponentManager.initialize(CocoonCom ponentManager.java:541)
at org.apache.avalon.framework.container.ContainerUtil.initialize(Container Util.java:283)
at org.apache.cocoon.Cocoon.initialize(Cocoon.java:314)
at org.apache.avalon.framework.container.ContainerUtil.initialize(Container Util.java:283)
at org.apache.cocoon.servlet.CocoonServlet.createCocoon(CocoonServlet.java: 1382)
at org.apache.cocoon.servlet.CocoonServlet.init(CocoonServlet.java:480)
at org.mortbay.jetty.servlet.ServletHolder.start(ServletHolder.java:220)
at org.mortbay.jetty.servlet.ServletHandler.initializeServlets(ServletHandl er.java:445)
at org.mortbay.jetty.servlet.WebApplicationHandler.initializeServlets(WebAp plicationHandler.java:150)
at org.mortbay.jetty.servlet.WebApplicationContext.start(WebApplicationCont ext.java:458)
at org.mortbay.http.HttpServer.start(HttpServer.java:663)
at org.mortbay.jetty.Server.main(Server.java:429)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav a:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor Impl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at Loader.invokeMain(Unknown Source)
at Loader.run(Unknown Source)
at Loader.main(Unknown Source)
Caused by: org.quartz.impl.jdbcjobstore.InvalidConfigurationException: Invalid delegate class: org.quartz.impl.jdbcjobstore.PostreSQLDelegate
at org.quartz.impl.jdbcjobstore.JobStoreSupport.setDriverDelegateClass(JobS toreSupport.java:427)
at org.apache.cocoon.components.cron.QuartzJobScheduler.createJobStore(Quar tzJobScheduler.java:756)
... 24 more
So, I tried resetting the Delegate to : org.quartz.impl.jdbcjobstore.StdJDBCDelegate instead of org.quartz.impl.jdbcjobstore.PostreSQLDelegate, which allows Quartz to startup without errors.
However, when I make CronJobs, I get database errors like:
ERROR (2004-11-08) 14:48.12:630 [cron] PoolThread-3/QuartzJobScheduler: cannot create QuartzJobSchedulerEntry
org.quartz.JobPersistenceException: Couldn't retrieve job: Bad Integer \254\355\000\005sr\000\025org.quartz.JobDataMap\237\260\203\350\277\251\ 260\313\002\000\001Z\000\023allowsTransientDataxr\000\035org.quartz.util s.DirtyFlagMap\023\346.\255(v\012\316\002\000\002Z\000\005dirtyL\000\003 mapt\000\017Ljava/util/Map; xp\001sr\000\021java.util.HashMap\005\007\332\301\303\026`\321\003\000\0 02F\000\012loadFactorI\000\011thresholdxp? @\000\000\000\000\000\014w\010\000\000\000\020\000\000\000\004t\000\035Q uartzJobScheduler.Parameterssr\0001org.apache.avalon.framework.parameter s.Parameters\253.+\343\333Q\026\375\002\000\002Z\000\012m_readOnlyL\000\ 014m_parametersq\000~\000\002xp\000sq\000~\000\004? @\000\000\000\000\000\014w\010\000\000\000\020\000\000\000\001t\000\010p ipelinet\000#gov-cms/publisher/archive/baz/ b.xmlxt\000\032QuartzJobScheduler.JobNamet\000\016end[baz/ b.xml]t\000"QuartzJobScheduler.RunConcurrentlysr\000\021java.lang.Boolea n\315 r\200\325\234\372\356\002\000\001Z\000\005valuexp\001t\000\027QuartzJobS cheduler.ROLEt\0002org.apache.cocoon.components.cron.CronJob/ pipelinex\000 [See nested exception: org.postgresql.util.PSQLException: Bad Integer
etc.
regards Jeremy
Jeremy Quinn wrote:
Hi All
Has anyone got any experience using a persistable JobStore with Quartz ?
I am trying to use Postgresql to persist Quartz jobs across restarts of Cocoon.
I have the following setup :
1) Using the script in docs/dbTables/tables_postgres.sql that comes with Quartz 1.4.2 distribution, create a database called 'quartz', grant privileges on the tables, confirm that I can connect with user: 'cocoon', using an external client (PostMan Query.app).
2) Add the postgres driver to : BRANCH_2_1_X/build/webapp/WEB-INF/lib/postgresql.jar
3) Add the config to load the driver to web.xml:
<init-param> <param-name>load-class</param-name> <param-value>org.postgresql.Driver</param-value> </init-param>
4) Add the datasource to cocoon.xconf :
<datasources> <jdbc logger="core.datasources.quartz" name="quartz"> <pool-controller max="10" min="5"/> <dburl>jdbc:postgresql://localhost/quartz</dburl> <user>cocoon</user> <password>*************</password> </jdbc> . . . </datasources>
5) Adjust the Quartz setup in cocoon.xconf :
<!--<store type="ram"/>-->
<store type="tx" delegate="org.quartz.impl.jdbcjobstore.PostreSQLDelegate">
<datasource provider="excalibur">quartz</datasource>
</store>
When I start Cocoon, I get the following exception in cron.log :
ERROR (2004-11-08) 11:50.10:449 [core.manager] (Unknown-URI) Unknown-thread/ExcaliburComponentManager: Caught an exception trying to initialize the component handler.
org.apache.avalon.framework.configuration.ConfigurationException: No datasource available by that name: quartz
at org.apache.cocoon.components.cron.DataSourceComponentConnectionProvide r. <init>(DataSourceComponentConnectionProvider.java:42)
at org.apache.cocoon.components.cron.QuartzJobScheduler.createJobStore(Qu ar tzJobScheduler.java:738)
at org.apache.cocoon.components.cron.QuartzJobScheduler.initialize(Quartz Jo bScheduler.java:321)
at org.apache.avalon.framework.container.ContainerUtil.initialize(Contain er Util.java:283)
at org.apache.avalon.excalibur.component.DefaultComponentFactory.newInsta nc e(DefaultComponentFactory.java:277)
at org.apache.avalon.excalibur.component.ThreadSafeComponentHandler.initi al ize(ThreadSafeComponentHandler.java:108)
at org.apache.avalon.excalibur.component.ExcaliburComponentManager.initia li ze(ExcaliburComponentManager.java:522)
at org.apache.cocoon.components.CocoonComponentManager.initialize(CocoonC om ponentManager.java:541)
at org.apache.avalon.framework.container.ContainerUtil.initialize(Contain er Util.java:283)
at org.apache.cocoon.Cocoon.initialize(Cocoon.java:314)
at org.apache.avalon.framework.container.ContainerUtil.initialize(Contain er Util.java:283)
at org.apache.cocoon.servlet.CocoonServlet.createCocoon(CocoonServlet.jav a: 1382)
at org.apache.cocoon.servlet.CocoonServlet.init(CocoonServlet.java:480)
at org.mortbay.jetty.servlet.ServletHolder.start(ServletHolder.java:220)
at org.mortbay.jetty.servlet.ServletHandler.initializeServlets(ServletHan dl er.java:445)
at org.mortbay.jetty.servlet.WebApplicationHandler.initializeServlets(Web Ap plicationHandler.java:150)
at org.mortbay.jetty.servlet.WebApplicationContext.start(WebApplicationCo nt ext.java:458)
at org.mortbay.http.HttpServer.start(HttpServer.java:663)
at org.mortbay.jetty.Server.main(Server.java:429)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j av a:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess or Impl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at Loader.invokeMain(Unknown Source)
at Loader.run(Unknown Source)
at Loader.main(Unknown Source)
DataSourceComponentConnectionProvider cannot find the specified datasource.
What have I done wrong?
Thanks for any help
regards Jeremy
--------------------------------------------------------
If email from this address is not signed IT IS NOT FROM ME
Always check the label, folks !!!!! --------------------------------------------------------
--------------------------------------------------------
If email from this address is not signed
IT IS NOT FROM MEAlways check the label, folks !!!!! --------------------------------------------------------
