2012-01-25 2 views
0

Я хотел инкапсулировать детали создания/разрешения адресата в какую-то реализацию DestinationResolver.Spring Framework JMS подход к определению адресата назначения

Сведения о создании соединения, создании сеанса, создании/разрешении адресата.

Будет ли такая реализация плохим подходом?

public class SessionAwareDestinationResolver extends DynamicDestinationResolver { 

    private Session session; 

    @Inject 
    public SessionAwareDestinationResolver(ConnectionFactory connectionFactory) { 
     try { 
      Connection connection = connectionFactory.createConnection(); 
      session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); 
     } catch (JMSException ex) { 
      throw JmsUtils.convertJmsAccessException(ex); 
     } 
    } 

    public Destination resolveDestinationName(String destinationName, 
      boolean pubSubDomain) throws JMSException { 
     return super.resolveDestinationName(session, destinationName, 
       pubSubDomain); 
    } 
} 

UPDATE

бы лучше подход просто обернуть конкретную задачу в качестве выполнения действий?

http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/jms/core/JmsTemplate.html#execute(org.springframework.jms.core.SessionCallback)

ответ

1

Не уверен, что если я полностью понял вас, JmsTemplate уже обеспечивает очень хорошую абстракцию для отправки/получения сообщения от провайдеров JMS - вам не придется иметь дело с сырым JMS ConnectionFactory или сессии. Если у вас нет конкретной необходимости в сеансе - скажем, чтобы реализовать браузер очереди или запрос/ответ в том же сеансе и т. Д., Если это так, то подход использования SessionCallback с методом execute JmsTemplate, как вы упомянули, является хорошим идея, а не необходимость писать собственную абстракцию.

+0

Мне нужен был способ разрешить судьбы без необходимости сеанса. Использование шаблона предоставляет мне средства – predhme

Смежные вопросы