O quartzo é uma fonte aberta e, serviço full-featured livre programação de trabalho que pode ser integrado com, ou utilizados ao longo do lado praticamente qualquer aplicativo Java EE ou Java SE - desde o mais pequeno aplicativo autônomo para o maior sistema de e-commerce .
Quartzo pode ser usado para criar agendas simples ou complexas para executar dezenas, centenas ou até dezenas de milhares de postos de trabalho; empregos cujas tarefas são definidas como componentes padrão Java que podem executados praticamente qualquer coisa que você pode programá-los para fazer. O Quartz Scheduler inclui muitos recursos de nível empresarial, tais como transações JTA e clustering.
Recursos :
- Ambientes de tempo de execução:
- Quartz pode executar incorporado em outro aplicativo livre de pé
- Quartz pode ser instanciado dentro de um servidor de aplicativos (ou servlet container), e participe de transações XA
- Quartz pode ser executado como um programa stand-alone (dentro de sua própria Máquina Virtual Java), para ser usado via RMI
- Quartz pode ser instanciado como um conjunto de programas autônomos
- Agendamento de trabalho:
- Os trabalhos são programados para executar quando ocorre um determinado Trigger. Triggers podem ser criados com praticamente qualquer combinação das seguintes directivas ...
- em um determinado momento do dia (para o milissegundo)
- em determinados dias da semana
- em determinados dias do mês
- em determinados dias do ano
- não em determinados dias listados dentro de um calendário registrada (como feriados comerciais)
- repetida um número específico de vezes
- repetido até que uma hora / data
- repetido indefinidamente
- repetido com um intervalo de atraso
(Com capacidades de carga de equilíbrio e de failover)
O que é novo nesta versão:
- Contorno da maioria das mudanças na API significativa:
- métodos de API que retornam (ou tomam como parâmetros) agora retornam matrizes (ou tomar) digitado coleções. Por exemplo, em vez de getJobGroupNames (): String [] agora temos getJobGroupNames (): Lista
- Job e identificação Gatilho agora é baseada em JobKey e TriggerKey. Chaves incluir tanto um nome e um grupo. Os métodos que operam em determinados empregos / gatilhos agora tomar chaves como o parâmetro. Por exemplo, getTrigger (chave TriggerKey): Trigger, em vez de getTrigger (String nome, grupo String):. Gatilho
- Trigger é agora uma interface, em vez de uma classe. Da mesma forma para SimpleTrigger, CronTrigger, etc.
- New DSL / API baseada construtor para trabalhos de construção e gatilhos:
- Métodos de TriggerUtils relacionados a fácil construção de datas foram movidas para nova classe DateBuilder, que pode ser usado com as importações estáticas para bem criar ocorrências de Date para início e término gatilho, etc.
- A interface StatefulJob foi preterido em favor de novas anotações de nível de classe para as classes de Emprego (usando ambas as anotações produz equivalente à da interface StatefulJob de idade):
- ersistJobDataAfterExecution - instrui o agendador de re-armazenar conteúdos JobDataMap de Jó após a execução for concluída .
- isallowConcurrentExecution - instrui o programador para bloquear outras instâncias do mesmo trabalho (por JobKey) de executar quando um já está .
- Nova anotação:ExecuteInJTATransaction. Adicionando essa anotação a uma classe Job instrui Quartz para iniciar uma transação JTA antes de executar o trabalho (e cometer / rollback após a conclusão / exceção). A propriedade de configuração 'wrapJobExecutionInUserTransaction' da versão 1.x ainda existe, mas a nova anotação permite que você sintonize o comportamento on por posto de trabalho, enquanto a propriedade de configuração afeta todos os trabalhos.
- As mudanças mais significativas uso de JobListener e TriggerListener:
- A remoção da distinção entre "global" e ouvintes "não-globais"
- JobDetails e Triggers não são mais configurado com uma lista de nomes de ouvintes de notificação, em vez ouvintes identificar quais tarefas / desencadeia eles estão interessados em.
- Os ouvintes estão agora atribuído um conjunto de instâncias Matcher -. que fornecem regras de correspondência para o emprego / desencadeia que desejam receber eventos para
- Os ouvintes são actualmente geridos através de uma API ListenerManager, em vez de diretamente com a API Scheduler.
- A classe SchedulerException e hierarquia de classes foi limpa.
- DateIntervalTrigger foi renomeado para CalendarIntervalTrigger (ou mais exatamente a classe concreta é agora CalendarIntervalTriggerImpl).
- A noção (propriedade) de "volatilidade" de postos de trabalho e gatilhos foi eliminada.
- Nova MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY de instruções falha de ignição gatilho permite um gatilho ser configurado de tal forma a que seja seletivamente ignorado falha de ignição de todo o manuseamento. Em outras palavras, ele será acionado assim que puder, sem tratamento especial - uma ótima opção para melhorar o desempenho particularmente com configurações que têm lotes de one-shot (não-repetição) desencadeia .
- método compareTo do Gatilho () agora se relaciona corretamente ao seu método () iguais, em que ele compara a chave do gatilho, ao invés de fogo próxima vez. Um novo comparador que classifica gatilhos acordo com o tempo fogo, prioridade e chave foi adicionado como Trigger.TriggerTimeComparator.
- Novos recursos:
- Scheduler.clear () método fornece uma maneira conveniente (e perigoso!) Para remover todos os trabalhos, gatilhos e calendários do planejador.
- Scheduler.scheduleJobs (Mapa triggersAndJobs, boolean substituir) método fornece disso conveniente de grandes quantidades de postos de trabalho e gatilhos.
- Scheduler.unscheduleJobs (Lista triggerKeys) método fornece unscheduling conveniente de grandes quantidades de postos de trabalho.
- Scheduler.deleteJobs (Lista jobKeys) método fornece exclusão em massa conveniente de postos de trabalho (e gatilhos relacionados).
- Scheduler.checkExists (JobKey jobKey) e Scheduler.heckExists (TriggerKey triggerKey) métodos fornece uma maneira conveniente para determinar singularidade do trabalho chaves / gatilho (em oposição ao velho tem de ter que recuperar o trabalho / gatilho pelo nome e, em seguida, verificar se o resultado foi nulo).
- JDBCJobStore agora permite que um conjunto de tabelas a ser usado por várias instâncias do planejador distintas
- JDBCJobStore é agora capaz de armazenar implementações gatilho non-core sem utilizar colunas BLOB, através do uso da nova interface TriggerPersistenceDelegate, que pode (opcionalmente) ser implementado por implementadores de tipos de disparo personalizado.
- JDBCJobStore agora inclui um SybaseDelegate para uma melhor compatibilidade com Sybase
- expressões Cron agora suporta a capacidade de especificar um deslocamento para o "último dia do mês" e "último dia útil do mês" expressões. Por exemplos:. "L-3" (três dias de volta a partir do último do mês) ou "L-3W" (dia da semana mais próximo do dia, três dias de volta a partir do último dia do mês)
- arquivos XML contendo dados de programação têm agora uma maneira de especificar gatilho começar vezes mais deslocamentos para o futuro a partir do momento em que o arquivo é processado (útil para gatilhos que precisa para começar a disparar algum tempo após a aplicação é iniciada / implantado).
- A partir do esquema:
- esquema de arquivo XML agora suporta a especificação do imóvel "prioridade" de gatilhos.
- QuartzInitializerListener (e QuartzInitializerServlet) apoia novo parâmetro "esperar-on-shutdown", o que fará com que o Agendador de esperar para a execução de trabalhos para concluir antes de desligar, quando o recipiente Servlet é un-implementação do aplicativo.
- Adicionado DirectoryScanJob aos trabalhos do núcleo que navio com Quartz, também acrescentou parâmetro mínimo de idade para FileScanJob pré-existente.
- Adicionado a capacidade de adicionar o ServletContext no SchedulerContext ao usar QuartzInitializerListener ou QuartzInitializerServlet para inicializar Quartz dentro de um aplicativo web Java EE.
- Diversos:
- Várias melhorias de desempenho, incluindo (mas não limitado a):
- Capacidade de gatilhos batch-adquirem que estão prontos para ser disparados, que podem fornecer melhorias de desempenho para programadores muito ocupadas
- Os métodos para além lote / remoção de postos de trabalho e gatilhos (consulte "Novos recursos")
- Triggers têm uma nova opção instrução falhas de ignição, MISFIRE_INSTRUCTION_IGNORE_MISFIRE_POLICY, o que pode ser útil se você não precisar lidar com falhas de ignição para o seu disparo (s), e querem tirar vantagem de um ganho de desempenho
- Várias correções de bugs, para uma listagem completa veja as notas de lançamento do Jira: https://jira.terracotta.org/jira/secure/ReleaseNote.jspa?projectId=10282&version=10842
- DBCP não é mais usado para conexão com o banco de pooling, C3PO é usado em vez disso.
- implementações JobFactory agora são inicializados com (passado) um identificador para o Scheduler.
- Todos os exemplos embalados nos? Exemplos? diretório da distribuição de quartzo foram atualizadas para fazer uso de (demonstrar) a nova API para definir empregos e gatilhos.
O que é novo na versão 1.6.6:
- algumas correções importantes
- algumas pequenas melhorias
Requisitos :
- Java 2 Standard Edition Runtime Environment
Comentários não encontrado