Кварц JobStore с платформой Spring

Во-первых, именование Ваших споров с прописными буквами сбивает с толку. Так как Python не имеет формальной, статической проверки типа, мы используем UpperCase, чтобы означать класс и lowerCase означать аргумент.

1113-секундный, мы не беспокоимся CRoom и CPerson. Верхний регистр достаточен, чтобы указать, что это - класс. Буква C не используется. Room. Person.

В-третьих, мы обычно не помещаем вещи в [1 125] Один Класс На формат Файла . Файл является модулем Python, и мы чаще импортируем весь модуль со всеми классами и функциями.

[я знаю, что те - привычки - Вы не должны повреждать их сегодня, но из-за них действительно сложно читать.]

Python не использует статически определенные типы как C++. При определении функции метода Вы официально не определяете тип данных аргументов той функции. Вы просто перечисляете некоторые имена переменной. Хотелось бы надеяться, клиентский класс обеспечит аргументы корректного типа.

Во время выполнения, когда Вы выполняете запрос метода, тогда Python должен быть уверен, что объект имеет метод.Примечание. Python не проверяет, чтобы видеть, является ли объект правильным типом - который не имеет значения. Это только проверяет, чтобы видеть, имеет ли это правильный метод.

цикл между room.Room и person.Person является проблемой. Вы не должны включать тот при определении другого.

является самым безопасным импортировать весь модуль.

Вот room.py

import person
class Room( object ):
    def __init__( self ):
        self.nextId= 0
        self.people= {}
    def addPerson(self, firstName, secondName, gender):
        id= self.NextId
        self.nextId += 1

        thePerson = person.Person(firstName,secondName,gender,id)
        self.people[id] = thePerson
        return thePerson 

, Хорошо работает, пока Человек в конечном счете определяется в пространстве имен, где это выполняется. Человек не должен быть известен, когда Вы определяете класс.

Человек не должен быть известен до времени выполнения, когда тогда Человек (...) выражение оценено.

Вот person.py

import room
class Person( object ):
    def something( self, x, y ):
        aRoom= room.Room( )
        aRoom.addPerson( self.firstName, self.lastName, self.gender )

Ваш main.py, похож на это

import room
import person
r = room.Room( ... )
r.addPerson( "some", "name", "M" )
print r
13
задан skaffman 8 January 2010 в 11:55
поделиться

2 ответа

В вашем SchedulerFactoryBean также должен быть зарегистрирован "driverJob". Вместе с триггерами добавьте список jobDetails.

<bean id="job.statistics.DailyQPSValidationJobTrigger" class="org.quartz.CronTrigger">
    <property name="name" value="DailyQPSValidationTrigger" />
    <property name="jobName" value="DailyQPSValidation" />
    <property name="jobGroup" value="Statistics" />
    <property name="volatility" value="false" />
    <!-- Each day, 4 o'clock AM -->
    <property name="cronExpression" value="0 0 4 * * ?" />
</bean>

<!-- Scheduler -->

<bean id="job.SchedulerProperties" class="somecompany.someproduct.util.spring.PropertiesFactoryBean"
    scope="singleton">
    <property name="source">
        <props>
            <prop key="org.quartz.scheduler.instanceId">AUTO</prop>
            <prop key="org.quartz.scheduler.instanceName">JobCluster</prop>
            <prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreTX</prop>
            <prop key="org.quartz.jobStore.driverDelegateClass">org.quartz.impl.jdbcjobstore.StdJDBCDelegate</prop>
            <prop key="org.quartz.jobStore.isClustered">true</prop>
            <prop key="org.quartz.jobStore.useProperties">false</prop>
        </props>
    </property>
</bean>

<bean id="job.Scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" scope="singleton"
    lazy-init="false">
    <property name="startupDelay" value="30" />
    <property name="waitForJobsToCompleteOnShutdown" value="true" />
    <property name="dataSource" ref="jdbc.DataSource" />
    <property name="quartzProperties" ref="job.SchedulerProperties" />
    <property name="jobDetails">
        <list>
            <ref bean="job.statistics.DailyQPSValidationJobDetail" />
        </list>
    </property>
    <property name="triggers">
        <list>
            <ref bean="job.statistics.DailyQPSValidationJobTrigger" />
        </list>
    </property>
    <property name="schedulerListeners">
        <list>
            <bean class="somecompany.someproduct.job.SchedulerErrorListener">
                <property name="monitoringService" ref="monitoring.MonitoringService" />
            </bean>
        </list>
    </property>
    <property name="globalJobListeners">
        <list>
            <bean class="somecompany.someproduct.job.JobErrorListener">
                <property name="name" value="JobErrorListener" />
                <property name="monitoringService" ref="monitoring.MonitoringService" />
            </bean>
        </list>
    </property>
</bean>
13
ответ дан 2 December 2019 в 00:18
поделиться

I'm not sure if this will work, but you could try using:

   <bean id="driverJob" .../>

instead of:

   <bean name="driverJob" .../>
0
ответ дан 2 December 2019 в 00:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: