2013-04-16 29 views
6

Podczas korzystania wiadomość Driven Beans, nazwę docelowego skąd otrzymywać wiadomości jest zakodowana w adnotacji @MessageDriven(mappedName = "someDestinationName")Konfigurowanie MappedName adnotacji w Message Driven Bean dynamicznie

Czy istnieje sposób, aby dodać tę informację w czasie wykonywania? Bellow to przykładowa klasa Message Driven Bean.

package mdb.beans; 

import javax.ejb.ActivationConfigProperty; 
import javax.ejb.MessageDriven; 
import javax.jms.Message; 
import javax.jms.MessageListener; 

@MessageDriven(mappedName = "someDestinationName", activationConfig = 
{ 
    @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"), 
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue") 
}) 
public class MDBSample implements MessageListener 
{  
    public MDBSample() 
    { 
     // constructor 
    } 

    @Override 
    public void onMessage(Message message) 
    { 
     // logic when message received 
    } 
} 

Odpowiedz

2

O ile wiem, nie, nie można tego zrobić.

Ponieważ łączenie miejsca docelowego (który jest ciągiem) i komponentu bean (który jest klasą) zostało wykonane po raz w czasie wdrażania, nie można zmienić obiektu docelowego programowo.

Może jest hak do ponownego wiązania; Mam na myśli zmuszenie kontenera do wydania MDB, a następnie zmianę miejsca docelowego i ponowną inicjalizację (przechodzenie przez iniekcję zależności, następnie tworzenie kroków itd.), Ale wątpię, czy serwery aplikacji na to pozwolą.

Fragment JSR-318 (specyfikacja EJB 3.1);

5.4.17 Stowarzyszenie Message-Driven Beanwith miejsca przeznaczenia lub punktu końcowego

A fasola wiadomość napędzane jest związany z końcowego przeznaczenia lub gdy fasola jest rozmieszczony w pojemniku. Obowiązkiem Deployera jest powiązanie komponentu bean sterowanego komunikatami z punktem docelowym lub punktem końcowym.

5.4.17.1 JMS sterowany komunikatami Ziarna

JMS wiadomość napędzane fasoli jest powiązany z docelową JMS kolejki (lub strona) przy fasoli został umieszczony w pojemniku. Obowiązkiem Dystrybutora jest powiązanie komponentu bean sterowanego komunikatami z Kolejką lub tematem.