|
From: Daniel P. <po...@ci...> - 2004-02-19 15:06:49
|
Juergen,
I have a question regarding these classes and/or your general experience
using Quartz with Spring in an J2EE container. We've run into JNDI
lookup issues with jobs that attempt to use Spring beans that contain
references to JNDI resources (thru a JndiObjectFactoryBean). It appears
the Quartz job doesn't know it's running within the container (even
though the scheduler is started in the init() method of a servlet), so it's
dependencies fail to locate the default JNDI context (and therefore fail
to locate their JNDI dependencies). I assume this is because the
scheduler is running in its own thread, so it doesn't have any implicit
knowledge of the container. To get around this, we've been
forced to use a separate Spring config file for the Quartz jobs that
overrides the default JNDI settings used by the JndiObjectFactoryBean
like this (as if the job had to connect to JNDI remotely):
<!-- JNDI connection information -->
<bean id=3D"myJndiTemplate"
class=3D"org.springframework.jndi.JndiTemplate">
<property name=3D"environment">
<props>
<prop
key=3D"java.naming.factory.initial">com.ibm.websphere.naming.WsnInitialCont=
extFactory</prop>
<prop
key=3D"java.naming.provider.url">iiop://localhost:9091</prop>
<prop key=3D"java.naming.security.credentials">user</prop>
<prop key=3D"java.naming.security.principal">pw</prop>
</props>
</property>
</bean>
<!-- QUEUE CONNECTION FACTORY -->
<bean id=3D"jmsQueueConnectionFactory"
class=3D"org.springframework.jndi.JndiObjectFactoryBean"
lazy-init=3D"true">
<property name=3D"inContainer">
<value>false</value>
</property>
<property name=3D"jndiTemplate">
<ref local=3D"myJndiTemplate"/>
</property>
<property name=3D"jndiName">
<value>Example/QueueConnectionFactory</value>
</property>
</bean>
This also requires us to load a separate application context for the
Quartz jobs that uses these settings, rather than being able to share
the application context used by the rest of the application.
=20
Have you ever run into this issue? Do your support classes get around
this somehow?
Regards,
Daniel
On Wed, Feb 18, 2004 at 11:43:14PM +0100, j?rgen h?ller [werk3AT] wrote:
> Everybody,
> =20
> I've revived my Quartz support classes for Spring today. They emerged fro=
m a job scheduling consulting project I did in autumn 2003. We have concret=
e needs for this now at werk3AT, thus the revival: It's about quite simple =
cron-style scheduling of application jobs.
> =20
> The basic idea is to set up a Quartz Scheduler via a SchedulerFactoryBean=
, also allowing to register scheduled jobs there via a <list> of <refs> to =
ScheduledJobDefinition beans. A ScheduledJobDefinition is just a simple com=
bination of a Quartz JobDetail and a Quartz Trigger.
> =20
> ScheduledJobDefinition bean implementations include:
> - DefaultScheduledJobDefinition, allowing to use any implementation of Qu=
artz' Job interface with a declaratively configured job data map and cron t=
rigger
> - MethodInvokingJobDefinition, allowing to specify a method of a Spring-m=
anaged bean to execute as job (completely declarative, without the need for=
implementing a custom Job object), with a cron trigger.
> =20
> Both job definition beans can link in a separate Quartz Trigger instance =
instead of a cron expression; DefaultScheduledJobDefinition can also link i=
n a separate Quartz JobDetail instance instead of a job class.
> =20
> That's all there is: A simple declarative way of using Quartz within Spri=
ng. Typically no rescheduling or the like: All schedules are set up on cont=
ext startup, defined as bean definitions. Of course, you can also fetch the=
Scheduler instance and perform any custom scheduling, instead of using pre=
configured ScheduledJobDefinition beans.
> =20
> The typical usage scenario are low-level jobs within an application, like=
data synchronization or storage cleanup - all predefined jobs that are jus=
t customized by an administrator. Fits nicely into Spring's application con=
text model; most jobs will simply delegate to Spring-managed business objec=
ts.
> =20
> I expect to have this polished by the end of the week, as we need it at w=
erk3AT quite urgently. I'd like to include this already in Spring 1.0 final=
, as it's just 6 pretty simple classes (yes, I know - feature freeze - neve=
r mind ;-). The main question is where to put it: I suggest "org.springfram=
ework.scheduling.quartz".
> =20
> If there are no general objections, I'll commit it by the end of this wee=
k, for review within the next week - still plenty of time before 1.0 final =
;-) Looking forward to your feedback!=20
> =20
> Juergen
> =20
>=20
>=20
> -------------------------------------------------------
> SF.Net is sponsored by: Speed Start Your Linux Apps Now.
> Build and deploy apps & Web services for Linux with
> a free DVD software kit from IBM. Click Now!
> http://ads.osdn.com/?ad_id=1356&alloc_id438&op=3Dclick
> _______________________________________________
> Springframework-developer mailing list
> Spr...@li...
> https://lists.sourceforge.net/lists/listinfo/springframework-developer
|