Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

ejb koji se pokreće odmah pri startovanju jbossa ?

[es] :: Java :: ejb koji se pokreće odmah pri startovanju jbossa ?

[ Pregleda: 2310 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

zmau
Dragan Jovanović
programer
Šabac

Član broj: 80834
Poruke: 290
*.dynamic.sbb.rs.



+80 Profil

icon ejb koji se pokreće odmah pri startovanju jbossa ?26.06.2009. u 11:41 - pre 180 meseci
Treba na jbossu da napravim moduo koji će da komunicira sa FTP serverom i da reaguje kad god se na određenu lokaciju snimi nov fajl. FTP server sam našao. Ostaje mi problem kako da nateram jboss da pokrene diplojovani ejb (ili bilo koji moj algoritam, nije bitno da bude ejb) odmah pri startovanju, tako da klijent ne mora eksplicitno da okida metodu ejba, nego da ejb (odnosno neka njegova metoda) bukvalno počne da se izvršava pri startovanju jbossa.
it works on my machine
 
Odgovor na temu

gajo2
Budapest

Član broj: 62614
Poruke: 518
*.i-rose.si.

Sajt: b.flyingoranges.com


+117 Profil

icon Re: ejb koji se pokreće odmah pri startovanju jbossa ?26.06.2009. u 12:23 - pre 180 meseci
Jel ti odgovara da postavis neki scheduler koji ce recimo svakih 10 sekundi proveravati da li se nesto izmenilo u direktorijumu?
 
Odgovor na temu

zmau
Dragan Jovanović
programer
Šabac

Član broj: 80834
Poruke: 290
*.dynamic.sbb.rs.



+80 Profil

icon Re: ejb koji se pokreće odmah pri startovanju jbossa ?26.06.2009. u 12:48 - pre 180 meseci
Hm, možda se nismo razumeli.
Ja već imam mehanizam koji reaguje čim se desi ftp upload, tako da mi to nije sporno. Ali ne umem da ga pokrenem, da počne da osluškuje.

Mada bi mi i scheduler bio prihvatljiv. Kako misliš da pokreneš taj scheduler ?
it works on my machine
 
Odgovor na temu

gajo2
Budapest

Član broj: 62614
Poruke: 518
*.i-rose.si.

Sajt: b.flyingoranges.com


+117 Profil

icon Re: ejb koji se pokreće odmah pri startovanju jbossa ?26.06.2009. u 14:09 - pre 180 meseci
Aha pa zasto samo ne napravis jedan listener koji ce da pokrene taj modul? Mislim da se listeneri uvek izvrsavaju kada se pokrene web aplikacija...

Za ovaj scheduler, mozes koristiti Quartz, koji je integrisan u Spring pa mozda i u EJB, a mozes ga koristiti i samostalno.
Ja sam jednom napisao jedan programcic koji proverava postu pa ako ima nesto novo onda napravi sms od njega. Uglavnom ovo je web.xml:
Code:
<?xml version="1.0"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
    version="2.4">
  <listener>
      <listener-class>hello.NotesScheduler</listener-class>
  </listener>
  <env-entry>
      <env-entry-name>cronExpression</env-entry-name>
      <env-entry-type>java.lang.String</env-entry-type>
      <env-entry-value>0 0/2 * * * ?</env-entry-value>
  </env-entry>
</web-app>

Listener klasa:
Code:
package hello;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.sql.DataSource;

import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;
import org.apache.log4j.*;

public class NotesScheduler implements ServletContextListener {
    
    private static Logger log = Logger.getLogger(NotesScheduler.class);
    
    private Scheduler scheduler;

    public void contextInitialized(ServletContextEvent sce) {
        try {
            log.info("Starting Notes Scheduler...");
            
            Context iContext = new InitialContext();
            
            scheduler = StdSchedulerFactory.getDefaultScheduler();
            scheduler.start();
            
            JobDetail jd = new JobDetail("Notes check", "notes", NotesCheck.class);
            jd.getJobDataMap().put("type", "FULL");
            CronTrigger trigger = new CronTrigger("Notes check", "notes");
            trigger.setCronExpression((String)iContext.lookup(Consts.CRON_EXPRESSION));  // every minute
            scheduler.scheduleJob(jd, trigger);
            
        } catch (Exception ex) {
            log.error("Error starting the Notes scheduler: " + Util.getStackTrace(ex));
        }
    }
    
    public void contextDestroyed(ServletContextEvent sce) {
        try {
            log.info("Shutting down Notes Scheduler...");
            scheduler.shutdown();
        } catch (Exception ex) {
            log.error("Error shutting down the Notes scheduler: " + Util.getStackTrace(ex));
        }
    }

}

Tamo gde pise trigger.setCronExpression() tamo se cita cron expression iz web.xml-a, tj. da se posao izvrsava svaki minut.
Zatim napravis Job klasu, koja ce vec da proverava ftp, tj. ono sto kazes da vec imas.
 
Odgovor na temu

zmau
Dragan Jovanović
programer
Šabac

Član broj: 80834
Poruke: 290
*.dynamic.sbb.rs.



+80 Profil

icon Re: ejb koji se pokreće odmah pri startovanju jbossa ?26.06.2009. u 14:44 - pre 180 meseci
Hm. Uopšte ne pravim web aplikaciju. Pravim čist server. Tako da se nisam baš petljao sa web.xml deskriptorom. Videću da nađem u jbossu nešto što se tako zove pa da probam u njega da ispišem to što si mi predložio.

Btw, ima li web.xml suštinske veze sa web aplikacijama, ili se samo tako zove :) ?

[Ovu poruku je menjao zmau dana 26.06.2009. u 16:12 GMT+1]
it works on my machine
 
Odgovor na temu

hyle
Perica Milošević
Belgrade

Član broj: 30030
Poruke: 150
*.mozzartbet.com.

Sajt: www.linkedin.com/in/peric..


+4 Profil

icon Re: ejb koji se pokreće odmah pri startovanju jbossa ?26.06.2009. u 15:00 - pre 180 meseci
Evo pogledaj ovo: http://www.jboss.org/community/wiki/Scheduler

Moje poslednje iskustvo sa JBoss-om je u verziji 3.2.x i tada nisi morao da dodaješ ovaj dependency na Timer service.
Parametar InitialRepetitions postavi na 1 i onda će se scheduler izvršiti samo jednom, prilikom podizanja servera.

Fajl scheduler-service.xml sam stavljao u deploy/deploy.last i to mi je garantovalo da će se scheduler pokrenuti tek kada se završi deploy ostalih servisa.
 
Odgovor na temu

zmau
Dragan Jovanović
programer
Šabac

Član broj: 80834
Poruke: 290
*.dynamic.sbb.rs.



+80 Profil

icon Re: ejb koji se pokreće odmah pri startovanju jbossa ?26.06.2009. u 17:27 - pre 180 meseci
Bravo, Hyle, to je to. Pošto sam upravo sad odradio, ispisaću malo sažvakaniju verziju uputstva :
- Napravi klasu koja implementira org.jboss.varia.scheduler.Schedulable. U njenoj perform metodi treba da bude algoritam koji se okida.
- U jbossovom deploy folderu postoji fajl scheduler-service.xml. U njemu otkomentarisati <mbean code="org.jboss.varia.scheduler.Scheduler"..., među parametrima zadati naziv svoje klase, podesiti parametre za konstruktor, i ostale... i to je manje više to. Po potrebi iskoristiti foru sa deploy.last folderom.

Koristan link : https://www.redhat.gl/docs/man...aria.scheduler.Scheduler_.html.


Hvala lepo, momci.
it works on my machine
 
Odgovor na temu

mvasicdo
Mladen Vasic
Doboj

Član broj: 104294
Poruke: 226
79.143.169.*



Profil

icon Re: ejb koji se pokreće odmah pri startovanju jbossa ?20.10.2009. u 18:18 - pre 176 meseci
Hm, mozda i ovo moze pomoci:

Code:

@Stateful
@Name("startupAction")
@Scope(ScopeType.APPLICATION)
@Startup(depends = { "org.jboss.core.jndi", "org.jboss.core.jta", "org.jboss.seam.core.ejb" })
public class StartupAction implements StartupActionLocal {
...
...
...
}


Pozdrav...
 
Odgovor na temu

[es] :: Java :: ejb koji se pokreće odmah pri startovanju jbossa ?

[ Pregleda: 2310 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.