2017-07-24 168 views
0

我正在寻找配置Spring引导应用程序来执行连接的JNDI查找(配置initialContext)。这是作为独立的Spring启动应用程序运行的(不在应用程序服务器上)。我有工作正常以下,虽然我提供了所有的配置值自己(不设置超时的/ etc这里,但通常会):春季启动jms initialcontext

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

当应用程序服务器上运行,你可以设置一个JNDI通过在JNDI连接上指定一个“初始上下文工厂”来从外部连接(在本例中为源JMS服务器)提取配置值(超时/ etc)。如何从Spring应用服务器上运行的Spring启动应用程序执行相同的操作?

回答

0

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

Context ctx = new InitialContext(env);  

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