Utilizando una implementación de CommonJ con GlassFish y Spring 3

En mi búsqueda para unificar la implementación entre los entornos de Websphere 7 y GlassFish 3, decidí intentar implementar CommonJ WorkManager y TimerManager en GlassFish. Pero no está funcionando como se esperaba. He hecho lo siguiente:

Utilice la implementación myFOO CommonJ que se encuentra en:http: //commonj.myfoo.de e incluir las bibliotecas en mi carpeta de dominio / lib (incluidas las bibliotecas Spring)

Agregó lo siguiente a la<resources> sección del glassfish domain.xml:

<custom-resource res-type="commonj.work.WorkManager" jndi-name="wm/default" factory-class="de.myfoo.commonj.work.FooWorkManagerFactory"></custom-resource>
<custom-resource res-type="commonj.timers.TimerManager" jndi-name="tm/default" factory-class="de.myfoo.commonj.timers.FooTimerManagerFactory"></custom-resource>

Incluya las referencias en la<servers>/<server> sección del dominio.xml:

  <resource-ref ref="wm/default"></resource-ref>
  <resource-ref ref="tm/default"></resource-ref>

Agregue las referencias de recursos apropiadas en el web.xml de mi aplicación de prueba:

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

<resource-ref>
    <description>TimerManager</description>
    <res-ref-name>tm/default</res-ref-name>
    <res-type>commonj.timers.TimerManager</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Unshareable</res-sharing-scope>
</resource-ref>

Agregue los siguientes beans a mi applicationContext.xml:

<bean id="threadTestTaskExecutor" class="org.springframework.scheduling.commonj.WorkManagerTaskExecutor"> 
    <property name="workManagerName" value="wm/default" />
    <property name="resourceRef" value="true"/>
</bean>

<bean id="threadTestTimerExecutor" class="org.springframework.scheduling.commonj.TimerManagerTaskScheduler"> 
    <property name="timerManagerName" value="tm/default" />
    <property name="resourceRef" value="true" />
    <property name="shared" value="false" />
</bean>

<bean id="threadTest" class="test.ThreadTester"></bean>

<task:scheduled-tasks scheduler="threadTestTimerExecutor">
    <task:scheduled ref="threadTest" method="execute" fixed-delay="30000" />  <!-- 30 seconds -->
</task:scheduled-tasks>

Después de toda esta configuración, todo carga encuentra y se ejecuta la aplicación web; sin embargo, la clase ThreadTester no se ejecuta en el temporizador.

He recorrido el código myFOO y se está ejecutando el bucle principal TimerManager (FooTimerManager.java), parece que nunca reconoce que cada 30 segundos se supone que inicia la clase.

Mis preguntas

¿Alguien ha tenido experiencia implementando JSR 236/237 (CommonJ) con GlassFish 3 y Spring?

¿Hay alguna otra implementación que no sea myFOO que pueda usar y probar? ¿Alguien ha intentado hacer lo que he hecho? ¿Estaría dispuesto a compartir sus resultados si tuviera éxito?

¡Gracias

Edit 1:

Olvidé mencionar que usando la implementación de myFOO CommonJ con GlassFishhac trabajo en lo que respecta al WorkManager. Que hacen work es el TimerManager. Esto significa que puedo lanzar hilos bajo demanda muy bien, pero la programación activada no funciona.

Edit 2:

Desde la actualización a GlassFish 3.1.1, la implementación de myFOO CommonJ del TimerManager está funcionando bien. ¡Tan estupendo! Esta pregunta ahora es más como una guía de COMO.

Respuestas a la pregunta(3)

Su respuesta a la pregunta