Quartz Job Scheduling Framework第10章翻译初稿 续

 

In the example in Listing 10.2, the helloWorld() method that was invoked on the EJB didn't defined any parameters. The EJBInvokedJob class enables you to pass arguments to an EJB method by specifying them using the EJB_ARGS_KEY and EJB_ARG_TYPES_KEY parameters shown in Table 10.1.

<o:p> </o:p>

列表10.2中定义的供EJB调用的helloWord()方法并没有定义任何参数。EJBInvokedJob类允许你想EJB方法中传递参数。方法是使用表10.1中的EJB_ARGS_KEY 和 EJB_ARG_TYPES_KEY。

<o:p> </o:p>

Listing 10.3 shows another simple example that passes an argument to a different version of helloWorld() EJB running on the Apache Geronimo J2EE server.

<o:p> </o:p>

列表 10.3 显示了另一个简单的示例,将参数传递给其他版本的运行在Apache Geronimo J2EE 服务器上的EJB helloWorld() 。

<o:p> </o:p>

Listing 10.3 is very similar to Listing 10.2, except that it includes the parameters EJB_ARGS_KEY and EJB_ARG_TYPES_KEY. Also, because it's running against the Geronimo J2EE application server, it needed to add the arguments for PRINCIPAL and CREDENTIALS.

<o:p> </o:p>

列表10.3与10.2非常类似除了10.3中包含参数EJB_ARGS_KEY 和 EJB_ARG_TYPES_KEY。当然由于运行在Geronimo J2EE服务器上,它需要添加额外的参数(PRINCIPAL 和 CREDENTIALS)。

<o:p> </o:p>

Listing 10.3. A Simple Example Using the EJBInvokerJob<o:p></o:p>

列表10.3 一个简单的使用EJBInvokerJob的例子<o:p></o:p>

 

java 代码
<o:p>
  1. package org.cavaness.quartzbook.chapter10;   
  2.   
  3.     
  4.   
  5. import java.util.Date;   
  6.   
  7.     
  8.   
  9. import org.apache.commons.logging.Log;   
  10.   
  11. import org.apache.commons.logging.LogFactory;   
  12.   
  13. import org.quartz.JobDetail;   
  14.   
  15. import org.quartz.Scheduler;   
  16.   
  17. import org.quartz.SchedulerException;   
  18.   
  19. import org.quartz.Trigger;   
  20.   
  21. import org.quartz.TriggerUtils;   
  22.   
  23. import org.quartz.impl.StdSchedulerFactory;   
  24.   
  25. import org.quartz.jobs.ee.ejb.EJBInvokerJob;   
  26.   
  27.     
  28.   
  29. public class Listing_10_3 {   
  30.   
  31.      static Log logger = LogFactory.getLog(Listing_10_3.class);   
  32.   
  33.     
  34.   
  35.      public static void main(String[] args) {   
  36.   
  37.     
  38.   
  39.           Listing_10_3 example = new Listing_10_3();   
  40.   
  41.     
  42.   
  43.           try {   
  44.   
  45.     
  46.   
  47.               // Create a Scheduler and schedule the Job   
  48.   
  49.               Scheduler scheduler = example.createScheduler();   
  50.   
  51.               example.scheduleJob(scheduler);   
  52.   
  53.     
  54.   
  55.               // Start the Scheduler running   
  56.   
  57.               scheduler.start();   
  58.   
  59.     
  60.   
  61.               logger.info("Scheduler started at " + new Date());   
  62.   
  63.     
  64.   
  65.           } catch (SchedulerException ex) {   
  66.   
  67.                logger.error(ex);   
  68.   
  69.           }   
  70.   
  71.     
  72.   
  73.     
  74.   
  75.     
  76.   
  77.      }   
  78.   
  79.     
  80.   
  81.      // Schedule the EJBInvokerJob   
  82.   
  83.      private void scheduleJob(Scheduler scheduler)   
  84.   
  85.           throws SchedulerException {   
  86.   
  87.     
  88.   
  89.           // Create a JobDetail for the Job   
  90.   
  91.           JobDetail jobDetail = new JobDetail("HelloWorldJob",   
  92.   
  93.                     Scheduler.DEFAULT_GROUP,   
  94.   
  95.                     org.quartz.jobs.ee.ejb.EJBInvokerJob.class);   
  96.   
  97.     
  98.   
  99.           // Load all of the necessary EJB parameters   
  100.   
  101.           loadJobDataMap(jobDetail);   
  102.   
  103.     
  104.   
  105.           // Create a trigger that fires every 10 seconds, forever   
  106.   
  107.           Trigger trigger = TriggerUtils.makeSecondlyTrigger(10);   
  108.   
  109.     
  110.   
  111.           trigger.setName("helloWorldTrigger");   
  112.   
  113.           // Start the trigger firing from now   
  114.   
  115.           trigger.setStartTime(new Date());   
  116.   
  117.     
  118.   
  119.           // Associate the trigger with the job in the scheduler   
  120.   
  121.           scheduler.scheduleJob(jobDetail, trigger);   
  122.   
  123.     
  124.   
  125.      }   
  126.   
  127.     
  128.   
  129.      /*  
  130.  
  131.       * Configure the EJB parameters in the JobDataMap  
  132.  
  133.       * 在JobDataMap中配置EJB参数  
  134.  
  135.       */  
  136.   
  137.      public JobDetail loadJobDataMap(JobDetail jobDetail) {   
  138.   
  139.           jobDetail.getJobDataMap().put(   
  140.   
  141.                EJBInvokerJob.EJB_JNDI_NAME_KEY, "ejb/Test");   
  142.   
  143.     
  144.   
  145.           jobDetail.getJobDataMap().put(EJBInvokerJob.EJB_METHOD_KEY,   
  146.   
  147.                     "helloWorld");   
  148.   
  149.     
  150.   
  151.           Object[] args = new Object[1];   
  152.   
  153.           args[0] = " from Quartz";   
  154.   
  155.           jobDetail.getJobDataMap().put(   
  156.   
  157.                EJBInvokerJob.EJB_ARGS_KEY, args);   
  158.   
  159.     
  160.   
  161.           Class[] argTypes = new Class[1];   
  162.   
  163.           argTypes[0] = java.lang.String.class;   
  164.   
  165.           jobDetail.getJobDataMap().put(   
  166.   
  167.                EJBInvokerJob.EJB_ARG_TYPES_KEY, argTypes);   
  168.   
  169.     
  170.   
  171.           jobDetail.getJobDataMap().put(   
  172.   
  173.                EJBInvokerJob.PROVIDER_URL, "127.0.0.1:4201");   
  174.   
  175.     
  176.   
  177.           jobDetail.getJobDataMap().put(   
  178.   
  179.                EJBInvokerJob.INITIAL_CONTEXT_FACTORY,   
  180.   
  181.                          "org.openejb.client.RemoteInitialContextFactory");   
  182.   
  183.           jobDetail.getJobDataMap().put(   
  184.   
  185.                EJBInvokerJob.PRINCIPAL, "system");   
  186.   
  187.     
  188.   
  189.           jobDetail.getJobDataMap().put(   
  190.   
  191.                EJBInvokerJob.CREDENTIALS, "manager");   
  192.   
  193.     
  194.   
  195.           return jobDetail;   
  196.   
  197.      }   
  198.   
  199.     
  200.   
  201.      /*  
  202.  
  203.       * return an instance of the Scheduler from the factory  
  204.  
  205.       */  
  206.   
  207.      public Scheduler createScheduler() throws SchedulerException {   
  208.   
  209.           return StdSchedulerFactory.getDefaultScheduler();   
  210.   
  211.      }   
  212.   
  213. }   
  214.   
  215.     

 

EJBInvokerJob Parameters and Serialization<o:p></o:p>

EJBInvokerJob参数与串行化<o:p></o:p>

Because of the typical serialization problems that are associated with Java and distributed applications, you should stick to passing Strings and primitives to your EJB methods. If you need to pass more complex types, your code must serialize the objects between client and server properly. For more in-depth information on Java serialization, check out Sun's Serialization specification at http://java.sun.com/j2se/1.5.0/docs/guide/serialization.

<o:p> </o:p>

由于典型的串行化问题都与JAVA分布式应用有关,所以你最好只传递字符串和基本类型到EJB方法中。如果你需要传递复杂类型你需要在客户端和服务器代码中恰当的串行化对象。更加深入的关于JAVA串行化的资料点击Sun的串行化规范:http://java.sun.com/j2se/1.5.0/docs/guide/serialization。

<o:p> </o:p>

<o:p> </o:p>

Because Quartz needs to get a reference to the home and remote interfaces for the EJB, you need to deploy some J2EE client JARs with your external Quartz application. The JARs you need to add depend on which J2EE container you're using. If you're using WebLogic, for example, you'll probably just put the weblogic.jar with the Quartz application. For Geronimo, several are involved. Check with the server documentation to be sure.

<o:p> </o:p>

应为Quartz需要为EJB获取本地与远程的接口,你必须将一些J2EE客户端jar包导入到外部Quartz应用中。添加的Jar包依赖于你使用的J2EE容器。例如,如果你使用WebLogic你需要将weblogic.jar导入到Quartz应用中。如果使用Geronimo导入其他几个被调用的包。你需要查看服务器支持文档。

<o:p> </o:p>

Running Quartz Within the J2EE Application Server<o:p></o:p>

在J2EE应用服务器中部署Quartz<o:p></o:p>

Running Quartz as a J2EE client is a little more involved than running Quartz as an external J2SE application. This is mostly because deploying applications within the container is somewhat more complicated. In addition, the J2EE specification puts some constraints on components within the container. One of the biggest guidelines that the specification gives involves who and what can create Java threads. Because it's the container's responsibility to manage all resources, it can't allow just anything or anyone to create threads. If it did, it would have a harder time managing the environment and keeping things stable. Quartz creates its own worker threads, so you need to follow some steps to make sure things work properly.

<o:p> </o:p>

与作为外部J2SE应用相比将Quartz作为一个J2EE客户端比较复杂。这是因为在容器中部署应用就比较复杂。另外J2EE规范对容器内的组件加以约束。影响最大的准则是规范规定了谁或者什么可以创建JAVA线程。因为容器通过创建线程管理资源。所以不允许任何人或物私自创建线程。如果这样做了容器将不能管理环境也不能保持容器中事务的稳定。Quartz创建自己的工作线程。这样你就必须按下面的步骤配置以保证Quartz正常运行。

<o:p> </o:p>

Assume that a stateless session bean such as the one from Listing 10.1 is already deployed in the container. The easiest way to deploy Quartz within the container is to build a WAR file that contains all the necessary files and then use the admin tools, or Eclipse, to deploy the Web application within the container.

<o:p> </o:p>

加入要向容器中部署一个列表10.1那样的无状态会话bean。最简单的方法是将Quartz建立一个包含所有必要文件的war文件使用管理员工具或Eclipse将Web应用部署到容器中。

<o:p> </o:p>

The Web application directory structure is just like that of any other Web application. You need to add the following files to it:

<o:p> </o:p>

Web应用文件夹与其他Web应用相同。你需要相其中添加下面的文件。

<o:p> </o:p>

  • web.xml (put in WEB-INF)
  • quartz.properties (put in WEB-INF/classes)
  • quartz_jobs.xml (put in WEB-INF/classes)
  • Quartz binary (put in WEB-INF/lib)
  • Third-party libraries (put in WEB-INF/lib)

Because you are building a Web application, you need to add the requisite web.xml deployment descriptor. Listing 10.4 shows the web.xml for our client application that will be installed within the container.

<o:p> </o:p>

因为你要建立Web应用。你必须添加Web.xml文件。列表10.4显示了将要部署到容器中的客户端应用的web.xml。

<o:p> </o:p>

Listing 10.4. The web.xml for the Quartz J2EE Client Application<o:p></o:p>

列表10.4 Quartz J2EE客户端应用的web.xml<o:p></o:p>

xml 代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3.     
  4.   
  5. <web-app>  
  6.   
  7.   <servlet>  
  8.   
  9.     <servlet-name>QuartzServlet</servlet-name>  
  10.   
  11.     <servlet-class>  
  12.   
  13.       org.quartz.ee.servlet.QuartzInitializerServlet   
  14.   
  15.     </servlet-class>  
  16.   
  17.     <load-on-startup>1</load-on-startup>  
  18.   
  19.   </servlet>  
  20.   
  21.     
  22.   
  23.   <servlet-mapping>  
  24.   
  25.     <servlet-name>QuartzServlet</servlet-name>  
  26.   
  27.     <url-pattern>/servlet/QuartzServlet</url-pattern>  
  28.   
  29.   </servlet-mapping>  
  30.   
  31. </web-app>  
  32.   
  33.     

The Quartz framework includes a Java servlet called QuartzInitializerServlet that, when invoked, initializes the Quartz Scheduler and loads job information. In Listing 10.4, we've set the <load-on-startup> parameter to have a value of 1 so the servlet will be loaded and initialized when the container is started. By using the servlet to start the Quartz Scheduler, we avoid the issues of thread permission because the container will allow servlets to create user threads.

<o:p> </o:p>

Quartz 包含一个Java Servlet(QuartzInitializerServlet)当它被用来初始化Quartz 的Scheduler并加载job信息。在列表10.4中我们设置<load-on-startup>参数为1,当容器初始化时这个servlet就会被加载并初始化。通过使用servlet启动Quartz Scheduler我们避免了线程权限问题,因为容器允许servlet创建用户权限。<o:p></o:p>

<o:p> </o:p>

QuartzInitializerListener Added to Quartz<o:p></o:p>

将QuartzInitializerListener添加到Quartz中<o:p></o:p>

Recently, a new class called QuartzInitializerListener was added to Quartz that implements the javax.servlet.ServletContextListener interface. This class can be used as an alternative to the QuartzInitializerServlet mentioned earlier.

最近一个新类QuartzInitializerListener被添加到Quartz中改类实现javax.servlet.ServletContextListener接口,QuartzInitializerListener可以作为刚刚提到的QuartzInitializerServlet替代方案。

<o:p> </o:p>

Next, you need to put the standard quartz.properties file into the WEB-INF/classes directory of the Web application. There's nothing special about this version of the properties file; it's essentially what we did in past chapters. However, here we use the JobInitializationPlugin (this was shown in Chapter 8, "Using Quartz Plug-Ins," and is designed to load job information from an XML file). By default, the plug-in looks for a file called quartz_jobs.xml and loads the jobs found in the file. As Chapter 8 described, using this particular plug-in keeps you from having to write job-loading code and be forced to recompile when changes occur. The quartz_jobs.xml file for this example is shown in Listing 10.5.

<o:p> </o:p>

下一步你需要将quartz.properties文件添加到WEB-INF/classes文件夹中。Properties文件没有版本限制与我们在前面章节讲解的配置文件没有区别。然而,这里我们使用了JobInitializationPlugin(在第8章 使用Quartz插件 做详细讲解),它被设计用来从XML文件中加载Job信息。默认情况下,插件寻找quartz_jobs.xml文件并从中加载job信息。正如第8章描述的那样,这个特殊的插件使你不必编写job加载代码,也就不用在job发生改变时重新编译代码。这个例子的quartz_jobs.xml如列表10.5。

<o:p> </o:p>

Listing 10.5. The quartz_jobs.xml Used Within the J2EE Client<o:p></o:p>

列表10.5 在J2EE客户端使用的quartz_jobs.xml<o:p></o:p>

xml 代码
  1. <?xml version='1.0' encoding='utf-8'?>  
  2.   
  3.     
  4.   
  5. <quartz>  
  6.   
  7.   <job>  
  8.   
  9.     <job-detail>  
  10.   
  11.         <name>HelloWorldJob</name>  
  12.   
  13.         <group>DEFAULT</group>  
  14.   
  15.         <job-class>org.quartz.jobs.ee.ejb.EJBInvokerJob</job-class>  
  16.   
  17.         <volatility>false</volatility>  
  18.   
  19.         <durability>false</durability>  
  20.   
  21.         <recover>false</recover>  
  22.   
  23.     
  24.   
  25.         <job-data-map allows-transient-data="true">  
  26.   
  27.           <entry>  
  28.   
  29.             <key>ejb</key>  
  30.   
  31.             <value>ejb/Test</value>  
  32.   
  33.           </entry>  
  34.   
  35.           <entry>  
  36.   
  37.             <key>java.naming.factory.initial</key>  
  38.   
  39.             <value>org.openejb.client.RemoteInitialContextFactory</value>  
  40.   
  41.           </entry>  
  42.   
  43.           <entry>  
  44.   
  45.             <key>java.naming.provider.url</key>  
  46.   
  47.             <value>127.0.0.1:4201</value>  
  48.   
  49.           </entry>  
  50.   
  51.           <entry>  
  52.   
  53.             <key>method</key>  
  54.   
  55.      &nb
【用ArcGIS制作一张好看的中国月度气温图 要最后选中那个事先调整好的那个数据框,这样其他两个数据框才能和其大小一致。 阅读详情

相关推荐

以太网测试用例(光模块线缆、网卡类设备、交换类设备)

LeCroy力科网络测试相关的测试用例分享:光模块/DAC/ACC/AEC/AOC测试,网卡类产品测试/GPU/DPU/SmartNIC,交换类产品测试。涉及物理层的FEC,SKEW,Tx/Rx Taps和Layer23层的网络性能测试/吞吐量延迟抖动丢包率背靠背性能,以及RDMA带状况的网络协议分析。同步提供400G高速的以太网的损伤,提供定量,可重复的负面压力测试环境。

专注有线以太网性能测试--丹麦信雅纳网络(Xena Networks) 1989

Quartz Job Scheduling Framework第8章翻译初稿 续

  You can have as many properties as you need to configure your plug-in. 你可以用多个属性配置插件。 Plug-In Properties Must Have set() Methods&lt;o:p&gt;&lt;/o:p&gt; ...

188

STM32F103模拟SSI时序解析:实现高精度绝对式编码器位置读取

本文详细解析了如何在STM32F103微控制器上通过软件模拟SSI协议时序,实现高精度绝对式编码器的位置读取。文章从项目驱动出发,深入剖析了SSI通信原理、硬件电平转换连接、核心软件模拟代码实现及关键时序参数调试方法,并提供了使用示波器进行波形对齐与优化的实战指南,为成本敏感型工业控制与机器人项目提供了高性价比的解决方案。

weixin_29196315的博客 141

Quartz Job Scheduling Framework第10章翻译初稿

Chapter 10. Using Quartz with J2EE 第10章 在J2EE中使用Quartz   The Java 2 Platform, Enterprise Edition (J2EE) defines the standards for developing component-based enterprise applications. Whether you are in...

184

Oracle21C Windows安装全攻略:从下载到配置环境变量,避开ORA-12514的坑

本文详细介绍了Oracle21C在Windows系统上的安装全流程,包括环境准备、安装包验证、分步安装指南、数据库实例创建与配置、环境变量精准配置等关键步骤,特别针对常见的ORA-12514错误提供了解决方案,帮助用户顺利完成安装并避免常见问题。

ooo22的博客 414

保姆级教程:在Zynq UltraScale+ EV系列FPGA上,用VCU IP核搞定4K60帧H265视频解码与HDMI2.0输出

本文提供在Zynq UltraScale+ EV系列FPGA上使用VCU IP核实现4K60帧H265视频解码与HDMI2.0输出的全流程指南。从开发环境准备、Vivado工程配置到PetaLinux系统定制,详细解析硬件选型、IP核参数设置及性能优化技巧,帮助开发者快速构建高效视频处理系统。

weixin_30800987的博客 432

Quartz Job Scheduling Framework第8章翻译初稿

  Chapter 8. Using Quartz Plug-Ins 第8章 使用Quartz插件 The Quartz framework offers several ways to extend the capabilities of the platform. By using various "hooks" (commonly referred to as extension point...

234

告别手动复制粘贴:3种高效合并Excel表格的方法对比(含代码)

本文对比了VBA、Power Query和Python三种高效合并Excel表格的方法,并提供了可直接运行的代码。针对不同数据量、更新频率和技术背景,详细分析了各方案的优缺点与适用场景,帮助读者告别低效的手动操作,实现自动化数据整合。

weixin_29057237的博客 440

Quartz Job Scheduling Framework翻译初稿奉上

由于时间与水平限制。这本经典书籍翻译的可能并不尽如人意,在此先奉上翻译的初稿。供大家品评。希望大家看到错误的地方给予指正。 希望大家共同进步。...

129

Windows下玩转Spark:零基础本地集群搭建与实战演示

本文详细介绍了在Windows系统下零基础搭建Spark本地集群的完整流程,包括环境准备、集群启动、实战案例演示及性能优化技巧。通过Standalone模式快速部署,结合WordCount等经典案例帮助初学者快速掌握Spark数据处理,特别适合Windows环境下的大数据开发入门学习。

weixin_33734785的博客 424

安装Office程序时无法安装的解决方案

本文主要介绍了安装Office程序时无法安装的解决方案,希望能对安装Office的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 前置步骤 2.2 方法一 2.3 方法二

weixin_43178406的博客 15万+

Quartz Job Scheduling Framework第5章翻译初稿

在附件中

128

CAD二次开发c# .net加载cui\cuix菜单文件

public static void LoadMyCui(string cuiFile) { Document doc = Application.DocumentManager.MdiActiveDocument; object oldCmdEcho = Application.GetSystemVariable("CMDECHO"); object oldFileDia = Application.GetSys..

2126

Quartz Job Scheduling Framework第11章翻译初稿

内容在附件中

119

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Quartz Job Scheduling Framework中文版文档发布

 原文地址:http://www.blogjava.net/Unmi/archive/2008/08/24/223926.html Quartz Job Scheduling Framework 中    文    版          Chuck Cavaness 著     Unmi(隔叶黄莺) 译 译者博客:http://unmi.blogja

老紫竹的专栏 4936

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Quartz Job Scheduling Framework[翻译]- 中文版 CHM 文件发布

Quartz Job Scheduling Framework 中    文    版          Chuck Cavaness 著     Unmi(隔叶黄莺) 译 译者博客:http://unmi.blogjava.net/下载地址:Quartz Job Scheduling Framework 中文版.chm写在最前面的以此篇权当译者序。再次翻看一下我的博客,

一叶不知秋 2879

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Quartz Job Scheduling Framework第7章翻译初稿

内容在附件中

123

Quartz Job Scheduling Framework第2章翻译初稿

在附件中

126

jBPM用户指南 第8章 Quartz Job Scheduling Framework (转载)

Quartz Job Scheduling Framework第8章翻译初稿 续 You can have as many properties as you need to configure your plug-in.你可以用多个属性配置插件。 Plug-In Properties Must

吃螃蟹的虾子 1567

发布 Quartz Job Scheduling Framework 中文 PDF 版

还是在一年前翻译完 Quartz Job Scheduling Framework 这篇手册、并做成了 CHM 文档,见此:Quartz Job Scheduling Framework[翻译]- 中文版 CHM 文件发布。Quartz Job Scheduling Framework 中文 PDF 版下载地址:http://www.scalaworks.com/index.php/downloa

一叶不知秋 4566

Quartz Job Scheduling Framework[翻译]第三章. Hello Quar

3. 声明式部署一个 Job 前面我们讨论过,尽可能的用声明式处理软件配置,其次才才虑编程式。再来看代码  3.6,如果我们要在 Job 启动之后改变它的执行时间和频度,必须去修改源代码重新编译。这种方式只适用于小的例子程序,但是对于一个大且复杂的系统,这就成了一个问题了。因此,假如能以声明式部署 Quart Job 时,并且也是需求允许的情况下,你应该每次都选择这种方式。·配置 quartz.p...

shazhifeng的专栏 170

Quartz Job Scheduling Framework[翻译]第三章. Hello Quartz (第二部分)

2. 调度 Quartz ScanDirectoryJob 到目前为止,我们已经创建了一个 Quartz job,但还没有决定怎么处置它--明显地,我们需以某种方式为这个 Job 设置一个运行时间表。时间表可以是一次性的事件,或者我们可能会安装它在除周日之外的每个午夜执行。你即刻将会看到,Quartz Schduler 是框架的心脏与灵魂。所有的 Job 都通过 Schduler 注册;必要

九天之凤 588

Quartz Job Scheduling Framework[翻译]第三章. Hello Quartz (二)

3. 声明式部署一个 Job 前面我们讨论过,尽可能的用声明式处理软件配置,其次才才虑编程式。再来看代码 3.6,如果我们要在 job 启动之后改变它的执行时间和频度,必须去修改源代码重新编译。这种方式只适用于小的例子程序,但是对于一个大且复杂的系统,这就成了一个问题了。因此,假如能以声明式部署 Quart Job 时,并且也是需求允许的情况下,你应该每次都选择这种方式。 ·配置 ...

weiw_beyond的博客 139

Quartz Job Scheduling Framework Reading Note(一)

Quartz Job Scheduling Framework中文版阅读笔记(Unmi(隔叶黄莺) 译, 译者博客:http://unmi.blogjava.net/) 转载于:https://blog.51cto.com/williamx/742497

weixin_34234823的博客 115

ComfyUI视频生成零基础入门:从节点工作流到AI短片制作

Stable Diffusion作为当前最流行的AI图像生成技术,通过扩散模型原理实现了从文本到图像的智能创作。其技术价值在于降低了创意表达的门槛,广泛应用于数字艺术、内容创作等领域。在视频生成场景中,帧间一致性和时序控制成为关键技术挑战。ComfyUI作为基于节点式工作流的Stable Diffusion图形界面,通过可视化编程方式解决了这些问题。它支持AnimateDiff运动模型和ControlNet控制网络,能够实现连贯的视频生成。对于AI视频生成初学者,掌握ComfyUI的节点连接、参数配置和工作

weixin_34239169的博客 306
上一篇: Quartz Job Scheduling Framework第10章翻译初稿
下一篇: Quartz Job Scheduling Framework翻译初稿奉上
adamed
博客等级 码龄20年 542粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值