Domanda

Il mio datore di lavoro mi ha appena chiesto di eseguire un tempo di processo batch in Java EE WebSphere application che hanno in esecuzione.E ' prevista l'esecuzione di una certa classe, alle 11:30 pm tutti i giorni.

Io non sono molto familiare con Java EE, né WebSphere server (o tomcat, nell'ambiente di sviluppo), e ho spulciato ma non ho trovato è su java la classe timer, ma non come impostarlo o richiamarlo.

Sembra che modifica il web.xml il file è richiesto.

Qualsiasi aiuto sarà apprezzato!

È stato utile?

Soluzione

Si dovrebbe guardare l'open-source Quarzo biblioteca da OpenSymphony.Molto facile da utilizzare e perfetto per questo genere di cose.

TimerTasks sono più adatti per l'esecuzione di qualcosa in un breve periodo di tempo in futuro.Ma per l'esecuzione ripetuta in un ampio arco di tempo come questo, Quarzo eccelle.Si può anche mantenere la vostra lista dei prossimi compiti in memoria persistente, ad esempio un file o in un database, in modo imminente temporizzato lavori non si perde se l'applicazione viene riavviata.

Inoltre, c'è una fantastica astrazione per Quarzo in Primavera quadro.

Altri suggerimenti

In WebSphere, è possibile utilizzare il Servizio di Pianificazione per attivare l'esecuzione di un metodo in una classe java.La pianificazione prevede un calendario per programmare l'esecuzione dei lavori (simile a cron) o si potrebbe sviluppare il vostro proprio.

Ecco un link alla pagina che descrive l'utilità di pianificazione, che è STATO 6.1 documentazione:

http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp

EJB 3.1 avrà migliorato il timer di servizi, nonché l'applicazione del ciclo di vita dei ganci che elimina la necessità di utilizzo di servlet per avviare l'attività senza l'interazione dell'utente.

Questo può rispondere alla domanda del titolo, ma per la "vera" domanda relativa a un'applicazione legacy (scritto più di 6 mesi fa ;)) in esecuzione su websphere mi consiglia di andare con la start-up servlet EJB timer servizio.

Servizio Timer di J2EE 1.4 (EJB 2.1)

Per EJB 3.0 (e 3.1 non appena disponibile), ci sono alcune annotazioni ;)

Vorrei introdurre un altro libreria a meno che non si ha REALMENTE bisogno.Il servizio timer dovrebbe essere sufficiente per l'esecuzione arbitraria di un lavoro su una base quotidiana.

HTH,
Martin

Nel web.xml è possibile configurare un servlet caricare all'avvio.
Sintassi:

<servlet servlet-name="hello" servlet-class="test.HelloWorld">
<load-on-startup />
</servlet>

Fare questo, allora il metodo di inizializzazione della servlet è possibile impostare un Timer / TimerTask per fare ciò che devi fare.TimerTasks sono come Fili tranne che si può pianificare la loro esecuzione.

Il quarzo è parte dello standard JBoss 4.2.x distribuzione.

Ed è davvero una buona biblioteca, che senza molto lavoro si può anche definire semplici flussi di lavoro.

Non vi è alcun supporto per la pianificazione in WebSphere.

Se siete su unix, è possibile utilizzare crontab per pianificare una richiesta per una pagina di websphere application.Suppongo che su windows c'è anche la possibilità di pianificare una richiesta per una pagina.Nel mio crontab pianifica una richiesta per una pagina web ogni giorno alle 8:45

45 8 * * * OTTENERE http://www.domain.com/myBatch?securitykey=verysecret

Ora, ogni mattina, il myBatch servlet viene chiamato e non ci posso fare ciò che deve essere fatto in quel momento.Per evitare altri chiamando questa pagina e avviare il batch, ho aggiunto il securitykey parametro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top