Cambio de la configuración de activación de MDB de lectura de temas en el momento de implementación

Siento que esto debería ser fácil. Solo RTM y listo. Pero no puedo encontrar la información que necesito.

Q: ¿Puedo cambiar el valor de un@ActivationConfigProperty en el momento de la implementación sin tener que escribir ningún XML?

Mas detalle

Tengo un MDB que usa el@MessageDriven anotación. Dentro de esto hay una serie de@ActivationConfigProperty anotaciones que lo configuran.

@MessageDriven(mappedName = "jms/TestJeremyTopic ", activationConfig = {
        @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
        @ActivationConfigProperty(propertyName = "subscriptionDurability", propertyValue = "Durable"),
        @ActivationConfigProperty(propertyName = "clientId", propertyValue = "TopicReaderBeanClientId"),
        @ActivationConfigProperty(propertyName = "subscriptionName", propertyValue = "TopicReaderBeanSubscriptionName")
})
public class TopicReaderBean implements MessageListener { // ...

Necesito implementar este MDB varias veces, haciendo referencia a un tema diferente cada vez.

En el momento del despliegue (WebSphere 7 ND) puedo configurar unTopicListenerPort (Forma de mapeo de WebSphere a diferentes temas) para cada EAR. Sin embargo, cuando intento iniciar una segunda instancia, falla con el error:

WMSG0019E: No se puede iniciar MDB Listener TopicReaderBean, JMSDestination jms / MMiSInLonTopic: com.ibm.msg.client.jms.DetailedIllegalStateException: JMSWMQ0026: Error al suscribirse al tema 'MMIS_LON_IN' usando MQSUB. Es posible que haya habido un problema al crear la suscripción debido a que está siendo utilizada por otro consumidor de mensajes. Asegúrese de que los consumidores de mensajes que usan esta suscripción estén cerrados antes de intentar crear una nueva suscripción con el mismo nombre. Consulte la excepción vinculada para obtener más información. Causado por: com.ibm.mq.MQException: JMSCMQ0001: la llamada de WebSphere MQ falló con el motivo del código de compilación '2' ('MQCC_FAILED') '2429' ('MQRC_SUBSCRIPTION_IN_USE').

Cuando miro a MQ Explorer, puedo ver que el nombre de la suscripción esJMS:GGWKNNG5:gmm_poc_06:TopicReaderBeanSubscriptionName Esta es una composición de "JMS", nombre de QueueManager, ID de fábrica de conexión de tema y ActivationConfigProperty "suscripciónName". La segunda conexión falla debido a un choque en este nombre de suscripción. Necesito distinguir los nombres de suscripción utilizados por distintas instancias de MDB.

Si bien podría crear una nueva Fábrica de conexiones de temas para cada bean, sería mucho trabajo y no tiene mucho sentido.

Quéhace tiene sentido tener un nombre de suscripción diferente por bean. Sin embargo, esta propiedad está integrada en la anotación y no puedo ver en ninguna parte de WebSphere que me permita anularla.

Entonces, ¿puedo anular esta propiedad sin tener que escribir un descriptor de implementación XML? Y si yohacer Necesito escribir algo de XML, ¿cómo anulo la propiedad en él?

Respuestas a la pregunta(1)

Su respuesta a la pregunta