spring boot jms initialcontext

时间:2017-07-24 22:09:26

标签: java spring spring-boot jms spring-jms

我希望配置一个Spring启动应用程序来执行连接的JNDI查找(配置initialContext)。它作为独立的Spring启动应用程序运行(不在应用程序服务器上)。我有以下工作正常,虽然我自己提供了所有的配置值(这里没有设置超时/等,但通常会这样):

@Bean
public ConnectionFactory tibJmsConnectionFactory() throws JMSException {
    TibjmsConnectionFactory myFac = new TibjmsConnectionFactory();
    myFac.setServerUrl("tcp://xxxxx:7222");
    myFac.setUserName("xxxxxxx");
    myFac.setUserPassword("xxxxxx");
    return myFac;
}

@Bean
public JmsListenerContainerFactory<?> myFactory(ConnectionFactory connectionFactory,
                                                DefaultJmsListenerContainerFactoryConfigurer configurer) {
    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
    configurer.configure(factory, connectionFactory);
    return factory;
}

在应用程序服务器上运行时,您可以通过指定&#34;初始上下文来设置JNDI上下文URL以从外部连接(在我们的示例中为源JMS服务器)中提取配置值(超时/等)工厂&#34;在JNDI连接上。我如何从不在应用程序服务器上运行的Spring启动应用程序中执行等效操作?

1 个答案:

答案 0 :(得分:0)

您的tibJmsConnectionFactory()未从服务器返回连接工厂。你只是用一些属性来实例化它。你要做上下文查找。

    Context ctx = new InitialContext(env);      

    TibjmsConnectionFactory connectionFactory = (TibjmsConnectionFactory) ctx.lookup("factoryName");