2009-09-24 18 views
6

Vorrei utilizzare un WorkManager per pianificare alcuni processi paralleli su un server di applicazioni WebLogic 10.3.Come configurare i WorkManager in WebLogic 10.3?

http://java.sun.com/javaee/5/docs/api/javax/resource/spi/work/WorkManager.html

sto trovando la documentazione di Oracle/BEA un po 'frammentata e difficile da seguire e non ha buoni esempi per l'utilizzo di WorkManagers da EJB 3.0.

In particolare, mi piacerebbe sapere:

1) Che cosa, se non altro, ho bisogno di mettere nel mio descrittori di distribuzione (ejb-jar.xml e amici)?

2) Mi piacerebbe utilizzare l'annotazione @Resource per iniettare WorkManager nel bean di sessione EJB 3. Quale "nome" uso per la risorsa?

3) Come configurare il numero di thread e altri parametri per il WorkManager.

La mia comprensione è che l'implementazione sottostante su WebLogic è CommonJ, ma preferirei utilizzare un approccio non proprietario, se possibile.

+0

Ho finito per abbandonare i Manager di lavoro a favore dell'approccio utilizzando TimerService descritto in questo articolo. http://www.devx.com/Java/Article/33694/1954 Più semplice e più portatile e più adatto ai semplici requisiti che avevo. – hallidave

risposta

8

In primo luogo, troverete la documentazione di CommonJ, un'implementazione dell'API Timer and Work Manager sviluppata da BEA Oracle e IBM, in Timer and Work Manager API (CommonJ) Programmer’s Guide. Forniscono un esempio di Work Manager ma non viene iniettato in questo documento.

1) Che cosa esattamente, se non altro, è necessario inserire i descrittori di distribuzione (ejb-jar.xml e amici)?

Secondo la sezione Work Manager Deployment:

gestori di lavoro sono definiti a livello server tramite una risorsa-ref nel descrittore di distribuzione appropriata . Questo può essere web.xml o ejb-jar.xml tra gli altri.

Il seguente descrittore di deployment frammento dimostra come configurare un WorkManager:

... 
<resource-ref> 
    <res-ref-name>wm/MyWorkManager</res-ref-name> 
    <res-type>commonj.work.WorkManager</res-type> 
    <res-auth>Container</res-auth> 
    <res-sharing-scope>Shareable</res-sharing-scope> 
</resource-ref> 
... 

Nota: Il prefisso consigliata per lo spazio dei nomi JNDI per WorkManager oggetti è java: comp/env/wm.

Controllare i WorkManager javadocs per maggiori informazioni (ad esempio "La res-auth e res-sharing scopi vengono ignorati in questa versione della specifica. L'EJB o servlet possono quindi utilizzare il WorkManager come è necessario. ").

2) Mi piacerebbe utilizzare l'annotazione @Resource per iniettare WorkManager nel bean di sessione EJB 3. Quale "nome" uso per la risorsa?

direi che qualcosa di simile (non testato):

@ResourceRef(jndiName="java:comp/env/wm/MyWorkManager", 
auth=ResourceRef.Auth.CONTAINER, 
type="commonj.work.WorkManager", 
name="MyWorkManager") 

3) Come si configura il numero di thread e altri parametri per la WorkManager.

vedere la descrizione dell'elemento <work-manager> e Using Work Managers to Optimize Scheduled Work per informazioni dettagliate sul lavoro I gestori

mia comprensione è che l'implementazione sottostante su WebLogic è CommonJ, ma io preferisco usare un non proprietario avvicinarsi se possibile.

Non ho altri suggerimenti (e, se questa implementazione segue gli standard, non mi dispiacerebbe usarlo).

+0

Sembra 1) e 2) sono due versioni differenti della stessa cosa? Suppongo che tu abbia solo bisogno di fare 2) è una pura app EJB 3? – hallidave

+0

Lo penso anch'io. Ma ho provato 1), non 2) –

Problemi correlati