1

JBoss(AS 7.1.1.Final)接続ファクトリのバインディングが成功したように見えますが:

[org.jboss.as.messaging] (MSC service thread 1-9) JBAS011601: Bound messaging object to jndi name java:/ConnectionFactory

ルックアップのConnectionFactoryは常にnullです。誰かが問題が何であるかを見ることができますか?

@Configuration
@ComponentScan(basePackages = "reservation")
public class AppConfiguration extends WebMvcConfigurerAdapter {

    // ***********************//
    // ******** JMS **********//
    // ***********************//
    @Bean
    public ConnectionFactory jmsConnectionFactory() {
        JndiObjectFactoryBean jndiObjectFactoryBean = new JndiObjectFactoryBean();
        jndiObjectFactoryBean.setJndiName("java:/ConnectionFactory");
        return (ConnectionFactory) jndiObjectFactoryBean.getObject();
    }

    @Bean
    public Queue requestsQueue() {
        JndiObjectFactoryBean jndiObjectFactoryBean = new JndiObjectFactoryBean();
        jndiObjectFactoryBean.setJndiName("java:/queue/test");
        return (Queue) jndiObjectFactoryBean.getObject();
    }

    @Bean
    public JmsOperations jmsOperations() {
        final JmsTemplate jmsTemplate = new JmsTemplate(jmsConnectionFactory());
        jmsTemplate.setDefaultDestination(requestsQueue());
        return jmsTemplate;
    }
}
4

1 に答える 1

3

残念ながら、afterPropertiesSet()手動で呼び出す必要があります:

@Bean
public ConnectionFactory jmsConnectionFactory() {
    JndiObjectFactoryBean jndiObjectFactoryBean = new JndiObjectFactoryBean();
    jndiObjectFactoryBean.setJndiName("java:/ConnectionFactory");
    jndiObjectFactoryBean.afterPropertiesSet();                    //HERE
    return (ConnectionFactory) jndiObjectFactoryBean.getObject();
}

私が特に気に入っている代替案は次のとおりです。

@Bean
public JndiObjectFactoryBean jmsConnectionFactoryFactoryBean() {
    JndiObjectFactoryBean jndiObjectFactoryBean = new JndiObjectFactoryBean();
    jndiObjectFactoryBean.setJndiName("java:/ConnectionFactory");
    return jndiObjectFactoryBean;
}

public ConnectionFactory jmsConnectionFactory() {
    return (ConnectionFactory) jmsConnectionFactoryFactoryBean().getObject();
}

注釈が付けられてjmsConnectionFactory()ないことに注意してください@Bean(重要です)。その場合、Spring は適切なコールバック メソッドを呼び出します。

于 2013-01-24T20:24:31.733 に答える