2009-09-24 23 views
6

Me gustaría usar un WorkManager para programar algunos trabajos paralelos en un servidor de aplicaciones WebLogic 10.3.¿Cómo se configura WorkManagers en WebLogic 10.3?

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

estoy encontrando la documentación de Oracle/BEA un poco fragmentado y difícil de seguir y que no tiene buenos ejemplos para el uso de WorkManagers de EJB 3.0.

En concreto, me gustaría saber:

1) ¿Qué es exactamente, en todo caso, qué tengo que poner en mis descriptores de despliegue (EJB-jar.xml y amigos)?

2) Me gustaría usar la anotación @Resource para inyectar el WorkManager en mi bean de sesión EJB 3. ¿Qué "nombre" uso para el recurso?

3) ¿Cómo configuro el número de subprocesos y otros parámetros para el WorkManager.

Mi comprensión es que la implementación subyacente en WebLogic es CommonJ, pero preferiría utilizar un enfoque no propietario, si es posible.

+0

Terminé abandonando Work Managers a favor del enfoque usando TimerService que se describe en este artículo. http://www.devx.com/Java/Article/33694/1954 Más simple y más portátil y un mejor ajuste para los requisitos simples que tenía. – hallidave

Respuesta

8

Primero, encontrará la documentación de CommonJ, una implementación de la API de Timer and Work Manager desarrollada por BEA Oracle e IBM, en Timer and Work Manager API (CommonJ) Programmer’s Guide. Proporcionan un Ejemplo de Administrador de trabajo pero no se incluye en este documento.

1) ¿Qué es exactamente, en todo caso, debo poner en mis descriptores de implementación (ejb-jar.xml y amigos)?

De acuerdo con la sección Work Manager Deployment:

Los gestores de trabajo se definen a nivel servidor a través de un recurso-ref en el descriptor de despliegue apropiada . Esto puede ser web.xml o ejb-jar.xml entre otros.

El siguiente descriptor de despliegue fragmento demuestra cómo configurar 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: El prefijo recomendado para el espacio de nombres JNDI para WorkManager objetos es java: comp/env/wm.

Verificar los WorkManager javadocs para más detalles (por ejemplo, "El res-auth y alcances res de intercambio se tienen en cuenta en esta versión de la especificación. El EJB o servlet entonces pueden utilizar el WorkManager ya que necesita. ").

2) Me gustaría usar la anotación @Resource para inyectar el WorkManager en mi bean de sesión EJB 3. ¿Qué "nombre" uso para el recurso?

yo diría que algo como esto (no probado):

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

3) ¿Cómo se configura el número de hilos y otros parámetros para el WorkManager.

Véase la descripción del elemento <work-manager> y Using Work Managers to Optimize Scheduled Work para obtener información detallada relativa a los gestores de trabajo

Mi entendimiento es que la implementación subyacente en WebLogic es CommonJ, pero yo prefiero utilizar un no-propietario enfoque si es posible.

No tengo ninguna otra sugerencia (y, siempre que esta implementación cumpla con los estándares, no me importaría usarla).

+0

Parece que 1) y 2) son dos versiones diferentes de la misma cosa? Supongo que solo necesita hacer 2) ¿Es una aplicación pura de EJB 3? – hallidave

+0

Creo que también. Pero hice la prueba 1), no 2) –

Cuestiones relacionadas