0

宛先の作成/解決の詳細をある種の DestinationResolver 実装にカプセル化したかったのです。

詳細は、接続の作成、セッションの作成、宛先の作成/解決です。

そのような実装は悪いアプローチでしょうか?

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);
    }
}

アップデート

特定のタスクを実行アクションでラップするだけのより良いアプローチでしょうか?

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

4

1 に答える 1

0

私があなたを完全に理解しているかどうかはわかりません.JmsTemplateは、JMSプロバイダーからのメッセージの送受信に非常に優れた抽象化をすでに提供しています.生のJMS ConnectionFactoryまたはSessionを扱う必要はありません. セッションに特定の必要性がない限り、同じセッションなどでキューブラウザまたはリクエスト/レスポンスを実装するなど、その場合は、あなたが言及したようにJmsTemplateのexecuteメソッドでSessionCallbackを使用するアプローチが良いです独自の抽象化を作成する必要はありません。

于 2012-01-26T01:23:40.003 に答える