Avatar billede conrad Nybegynder
20. januar 2003 - 11:59 Der er 22 kommentarer og
1 løsning

afvikling af samme kode hver dag (JBOSS)

Jeg har brug får at få afviklet noget kode som tjekker nogle værdier i en database 1 gang om dagen.

Jeg har tænkt mig at benytte javas Timer klasse til dette.

Mit spørgsmål er så, hvor skal jeg placere sådan en klasse under JBOSS?
Avatar billede disky Nybegynder
20. januar 2003 - 12:11 #1
Placer det som et cron job på din server istedet.

På linux er det crontab du skal rette i, på windows skal du bruge 'at' kommandoen.

Hvis JBoss, skal rebootes er der stor chance for diverse timere tilter osv.
Avatar billede mfalck Praktikant
20. januar 2003 - 12:53 #2
kig evt på http://jcrontab.sourceforge.net/index.shtml

jeg har ikke prøvet den selv - men det ligner noget ...
Avatar billede arne_v Ekspert
20. januar 2003 - 13:19 #3
http://www.part.net/quartz.html er en open source scheduler for J2EE.

http://www.ejobscheduler.com/index.html er en commerciel scehduler
for J2EE.
Avatar billede arne_v Ekspert
20. januar 2003 - 13:21 #4
Men jeg tro faktisk, at JBoss har noget indbygget !

Se:
  http://www.jboss.org/online-manual/HTML/ch11s58.html
Avatar billede disky Nybegynder
20. januar 2003 - 13:22 #5
Hvorfor begynde med alt muligt j2ee cron's osv, når både Linux og NT har det indbygget ?

Ihvertefalde CRON under linux fungerer hamrende stabilt.
Avatar billede arne_v Ekspert
20. januar 2003 - 14:35 #6
Fordi en Java løsning i modsætning til operativ-systems løsningerne
er portable.
Avatar billede arne_v Ekspert
20. januar 2003 - 14:38 #7
Schedule funktionaliteten er iøvrigt med i den kommende EJB 2.1 standard.
Avatar billede disky Nybegynder
20. januar 2003 - 14:42 #8
Portal måske, men hvad hvis serveren går ned, er du helt sikker på at jobbet bliver afviklet til præcis den korrekte tid ?

Og det er KUN kaldet af java der skal være i Crontab og IKKE selve koden. Så det er stadigvæk portabelt.
Avatar billede arne_v Ekspert
20. januar 2003 - 14:50 #9
J2EE timere:
  - har persistent jobs så de stadig er der hvis maskinerne går ned
  - er XA compliant
  - har cluster support

Hvilket er 2 mere end operativ-systems schedulere kan klare (ihvertfald
på Linux og Windows).
Avatar billede disky Nybegynder
20. januar 2003 - 15:00 #10
Du ved udemærket at den persistent IKKE er meget værd hvis maskinen crasher, den duer når man lukker pænt ned, men i crash situationer er chancen for at sessions og lignende ryger sig en tur store.

De 2 sidste ting betyder INTET når det drejer sig om cron jobs eller hvad du nu kalder det.
Avatar billede arne_v Ekspert
20. januar 2003 - 15:23 #11
Jeg forstår ikke hvad du mener med at den persistens ikke er noget værd.

Hvorfor skulle en J2EE/Java scheduler som gemmer job info i en relationel
database være mere sårbar end en OS scheduler som typisk gemmer sin
job info i en flad fil ?
Avatar billede arne_v Ekspert
20. januar 2003 - 15:24 #12
Og det kan godt være at XA compliance og cluster support ikke betyder noget
for det du laver.

Men det betyder noget for andre.
Avatar billede disky Nybegynder
20. januar 2003 - 15:33 #13
I denne situation betyder det ikke noget.

Vi snakker her om et cron agtigt job, ikke om hele applicationen.

Læs eventuelt spørgsmålet.
Avatar billede arne_v Ekspert
20. januar 2003 - 15:56 #14
Jeg har læst spørgsmålet.

Jeg snakker også om et "cron job".

Og det betyder noget i nogen konfigurationer.
Avatar billede arne_v Ekspert
20. januar 2003 - 18:41 #15
conrad>

Skal jeg kave et lille eksempel med JBoss's indbyggede
scheduler ?
Avatar billede conrad Nybegynder
20. januar 2003 - 18:42 #16
det ville simplethen være for lækkert! Jeg kan så lige afsætte lidt flere point.
Avatar billede disky Nybegynder
20. januar 2003 - 18:55 #17
Den side han linkede til er fyldt med eksempler.
Avatar billede arne_v Ekspert
20. januar 2003 - 18:58 #18
Ja. For mange eksempler !
Avatar billede arne_v Ekspert
20. januar 2003 - 19:00 #19
HelloWorld.java:

package scheduler;

import java.util.Date;

import org.jboss.varia.scheduler.Schedulable;

public class HelloWorld implements Schedulable {
    public HelloWorld() {
        super();
    }
    public void perform(Date timeOfCall, long remainingRepetitions) {
        System.out.println("Hello world");
    }
}

mysch.jar:

C:\>jar tvf mysch.jar
    0 Mon Jan 20 18:53:10 CET 2003 META-INF/
    68 Mon Jan 20 18:53:10 CET 2003 META-INF/MANIFEST.MF
    0 Mon Jan 20 18:52:42 CET 2003 scheduler/
  653 Mon Jan 20 18:51:00 CET 2003 scheduler/HelloWorld.class

mysch-service.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE server>
<server>
  <classpath codebase="deploy" archives="mysch.jar"/>
  <mbean code="org.jboss.varia.scheduler.Scheduler"
    name=":service=Scheduler">
    <attribute name="StartAtStartup">true</attribute>
    <attribute name="SchedulableClass">scheduler.HelloWorld</attribute>
    <attribute name="InitialStartDate">0</attribute>
    <attribute name="SchedulePeriod">10000</attribute>
    <attribute name="InitialRepetitions">-1</attribute>
  </mbean>
</server>

kopier mysch-service.xml og mysch.jar til deploy directoriet
og voila så skriver den "Hello World" hver 10. sekund på
JBoss consol.
Avatar billede arne_v Ekspert
20. januar 2003 - 19:06 #20
Bemærk at attributten InitialStartDate er "mystisk" navngivet.

Det er faktisk en komplet start tid og du kan angive year+month+date+hour+minute
i et format som matcher locale.
Avatar billede conrad Nybegynder
20. januar 2003 - 20:35 #21
Jeg har problmer med at finde
org.jboss.varia.scheduler.Schedulable;
sikkert fordi den ikke er i min CLASSPATH. Er du klar over hvilken jar den er i?
Avatar billede arne_v Ekspert
20. januar 2003 - 20:45 #22
Ja.

lib\scheduler-plugin.jar
Avatar billede conrad Nybegynder
20. januar 2003 - 21:18 #23
Det virker (selvfølgelig). Tak for hjælpen til alle.
disky + mfalck>tak for forslagene, men da jeg bruger JBOSS er det arnes løsning der er den nemmeste at komme videre med.
arne> tak for eksemplet, det er fint at bygge videre på, lige hvad jeg havde brug for!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester