Liberty jmsQueueConnectionFactory设置createConnection()timeout

时间:2018-05-14 12:50:14

标签: java-ee jms websphere-liberty

在我的应用程序中,我检查我的MQ连接是否可用于连接工厂的方法javax.jms.ConnectionFactory.createConnection()

connection = connectionFactory.createConnection();

目前MQ防火墙已被阻止,因此未建立连接,我收到com.ibm.msg.client.jms.DetailedJMSException: MQJCA1011: Failed to allocate a JMS connection

我遇到的问题是,该方法的运行时间大约为2分钟。 我想将其设置为更低的值。该方法没有设置超时的参数,所以我认为它应该在应用服务器上设置。

我正在运行Liberty 18.0.0.1。

我的server.xml看起来像这样:

    <jmsQueueConnectionFactory id="myConnectionFactory"
            jndiName="myJNDI" connectionManagerRef="ConMgr0">
            <properties.wmqJms transportType="CLIENT" hostName="x.x.x.x"
        port="1234" channel="myChannel" queueManager="myQmanager"
        userName="myUSER" password="myPW" />
    </jmsQueueConnectionFactory>
    <connectionManager id="ConMgr0" maxPoolSize="10"
            agedTimeout="0s" connectionTimeout="10s"/>

但是,连接管理器的选项connectionTimeout不会更改此行为(保存值后重新启动Liberty)。即使我没有设置它,默认值也是30秒,显然不到2分钟:)

我在这里缺少其他一些配置吗?

亲切的问候

1 个答案:

答案 0 :(得分:0)

虽然我不能告诉你如何解决这个问题,但我可以解释为什么你尝试的东西不起作用。 connectionManager元素配置连接池,其connectionTimeout是获取池连接的超时,而不是建立新连接时的超时。为了控制建立新连接的超时,你需要在properties.wmqJms上有一个属性(它似乎没有任何存在),但即便如此它也无济于事,因为你没有知道你得到的连接是新建立的连接还是池连接。