Spring 2.5フレームの下にquartzを使う簡単な方法


退屈にquartzのjarパッケージをダウンロードして、springフレームワークの下でのタイミング操作を構成して、メールを送って遊びましょう列に出て使用するjarパッケージ:commons-collections-3.2.jar commons-logging.jar spring-2.5.1.jar quartz-all-1.6.5.jar mail.jar activation.jar説明:1.MyEclipseを使用してspring 2.5のサポートを追加すると、デフォルトではカテゴリ別jarパッケージが追加されますが、手間が省けばこの総合パッケージを使用しましょう.springが2.5バージョンでない場合は、spring-context-support.jarファイルをlibディレクトリの下に手動でコピーする必要があります.また、commons-collections-3.2.jarを使用するため、jarパケットの競合を防止するため、プロジェクトソースコードlibのcommons-collections-2.1.1を削除する.2.私はjavaee.jarパッケージを使っていません.これはただのモデルプロジェクトなので、そんなに面倒ではありません.正式なwebプロジェクトではjavaee.jarを使用する可能性があります.JavaMailのjarパッケージと衝突します.javaee.jarのmailとactivationディレクトリを削除し、独立したjarパッケージを使用します.元プロジェクトのディレクトリはおそらくeclipseの下にあるGenuitecCommonpluginsディレクトリでjavaee.jar 3を検索します.mail.jarとactivation.jarのダウンロードアドレス:http://java.sun.com/products/javamail/downloads/index.html http://java.sun.com/products/javabeans/jaf/downloads/index.html Javamail-1.4.3.zipとjaf-1_をダウンロード1_1.zipの2つのパッケージで、mail.jarとactivaction.jarを取ればいいです.Web.xmlファイルにspringサポートを追加するには
  <servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
  </context-param>

ステップ2では、springのコンテキストにquartz構成情報を追加します.次の構成は、SayHelloクラスのsayHelloメソッドを毎朝6時に実行することです.
  <bean id="sayHello" class="test.SayHello" />
  
  <bean id="reportTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject" ref="sayHello" />
    <property name="targetMethod" value="say" />
    <property name="concurrent" value="false" />
  </bean>
  
  <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail" ref="reportTask" />
    <property name="cronExpression" value="0 0 6 * * ?" />
  </bean>
  
  <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
      <list>
        <ref bean="cronTrigger" />
      </list>
    </property>
  </bean>

3つ目は、SayHelloクラスのsayHelloメソッドを作成し、メールを送信するタスクSayHello.javaを呼び出すことです.
  package test;
  public class SayHello {
  
    public void say(){
      System.out.println("-----------    !---------");
      sendMail();
      System.out.println("-----------    !---------");
    }
    
    public void sendMail() {
      try {
  
        Properties props = new Properties();
        Session sendsession;
        Transport transport;
  
        //       SMTP      
        props.put("mail.smtp.host", "smtp.163.com");
  
        //   SMTP         
        props.put("mail.smtp.auth", "true");
  
        //         
        sendsession = Session.getInstance(props, null);
        sendsession.setDebug(true);
  
        //   Session  Message  
        Message message = new MimeMessage(sendsession);
  
        //        
        message.setFrom(new InternetAddress("   "));
  
        //        
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(
            "   "));
  
        //   E-mail  
        message.setSubject("  ");
  
        //   html     
        //            BodyPart  
        BodyPart mdp = new MimeBodyPart();
  
        //  BodyPart         /    
        mdp.setContent("  ", "text/html;charset=gb2312");
  
        //     MimeMultipart      BodyPart (         )
        Multipart mm = new MimeMultipart();
  
        //  BodyPart   MimeMultipart   (      BodyPart)
        mm.addBodyPart(mdp);
  
        //   E-mail  
        message.setContent(mm);
  
        //     E-mail   
        message.saveChanges();
  
        //   Session  Transport  
        transport = sendsession.getTransport("smtp");
  
        //    SMTP   
        transport.connect("smtp.163.com", "     ", "  ");
  
        //   E-mail
        transport.sendMessage(message, message.getAllRecipients());
  
        //   Transport  
        transport.close();
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
    
  }