28 Ağustos 2014 Perşembe

Weblogic Schedule Job (Zamanlanmış Görev)

        Schedule Job java nın runnable kütüphanesiyle yazılabileceği ve bir jar dosyası olarak tetiklenebileceği gibi, web uygulaması olarak oluşturulup timer kütüphanesi ile de yazılabilmektedir. Burada amaç  Schedule Jobların uygulama sunucusu (Bende Weblogic)
üzerinde çalıştırılması, yönetiminin kolaylaştırılmasını sağlamaktır. Özellikle entegrasyon uygulamalarında SAP gibi sistemler karşılarında bir jar değilde kurumsal java uygulama sunucularının bulunmasını ister. START ve STOP işlemleri kolaylaşır, Herhangi bir bug ile karşılaştığınızda sunucu desteği alabilirsiniz, Loglar sunucu tarafından düzenli bir şekilde tutulur ...vb. Farkında olmasakta bir hataya müdahale ederken okadar çok 'ls','dir','pwd' gibi komutlarla dizin dizin geziyoruz, hatanın tekrar oluşmasını bekliyoruz yada uygulamanın durduğunu ertesi gün öğrenebiliyoruz. Bu yükleri sunucuya bırakmak yada JMX dünyasına girmekten başka şansımız kalmıyor :)

       Ben bütün projelerimde maven paket yapısını kullanıyorum. İleride bu konuyada ayrıca deyineceğim.


Önce Maven Web App oluşturmalı ve Aşağıdaki işlemleri izlemeliyiz.






WlsScheduleJobEx\WlsScheduleJobEx\src\main\webapp\WEB-INF\web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <display-name>WlsScheduleJobEx</display-name>
    <servlet>
        <servlet-name>ScheduleServlet</servlet-name>
        <servlet-class>com.blogtest.ex.wlsschedulejobex.ScheduleServlet</servlet-class>
        <load-on-startup>10</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>ScheduleServlet</servlet-name>
        <url-pattern>/ScheduleServlet</url-pattern>
    </servlet-mapping>
    <resource-ref>
        <res-ref-name>tm/TimerManager</res-ref-name>
        <res-type>commonj.timers.TimerManager</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Unshareable</res-sharing-scope>
    </resource-ref>
    <welcome-file-list>
        <welcome-file>ScheduleServlet</welcome-file>
    </welcome-file-list>
</web-app>

 Proje oluşturulduktan sonra pom.xml'in dependency içeriğini kopyalayın. Commonj jarı olmadığı için hata verecek. Bu durumda commonj jarını weblogic altında bulup maven repository mize eklememiz gerekiyor. consolda çalıştırılacak komut aşağıdaki gibi
mvn install:install-file -Dfile=jar_pathinigir\jarismi.jar -DgroupId=com.oracle -DartifactId=jarismi -Dversion=versiyon_no -Dpackaging=jar
WlsScheduleJobEx\WlsScheduleJobEx\src\main\java\com\blogtest\ex\wlsschedulejobex\SchTimer.java

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.blogtest.ex.wlsschedulejobex;

import commonj.timers.Timer;
import commonj.timers.TimerListener;
import java.util.Date;
import org.apache.log4j.Logger;

/**
 *
 * @author BeytullahC
 */
public class SchTimer implements TimerListener {
   public static final Logger logger= Logger.getLogger(SchTimer.class);
   /**
    * BURADA HERHANGI BIR IS YADA ISLEM YAPILABILIR
    * @param timer 
    */
    public void timerExpired(Timer timer) {
        logger.debug("SCHEDULE RUNNING, DATE AND TIME ==> "+new Date());
    }
}


WlsScheduleJobEx\WlsScheduleJobEx\src\main\resources\log4j.properties
# Root logger option
log4j.rootLogger                                 = DEBUG, stdout, stderr
 
# Direct log messages to stdout
log4j.appender.stdout                            = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target                     = System.out
log4j.appender.stdout.layout                     = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern   = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Direct log messages to sterr
log4j.appender.stderr                            = org.apache.log4j.ConsoleAppender
log4j.appender.stderr.Threshold                  = WARN
log4j.appender.stderr.Target                     = System.err
log4j.appender.stderr.layout                     = org.apache.log4j.PatternLayout
log4j.appender.stderr.layout.ConversionPattern   = %-5p %d [%t][%F:%L] : %m%n


Kaynak Kod : https://drive.google.com/file/d/0BxhjtDmkuDJtcW5jd21IVmVZRXM/edit?usp=sharing

Hiç yorum yok:

Yorum Gönder