Tibjms javax.jms.JMSException:服务器未知连接

Tibjms javax.jms.JMSException:服务器未知连接,java,jms,tibco,tibco-ems,Java,Jms,Tibco,Tibco Ems,我正在使用Tibjmsjar进行JMS连接,它在正常情况下可以正常工作,但在与JMS提供程序的连接丢失后又返回时,我遇到了问题。为了重现该问题,我执行了以下步骤- 连接到intranet并启动服务器。很好 断开与内部网的连接。它开始尝试重新连接服务器。好的 再次连接到内部网。它抛出未知异常,不再连接。问题 因此,我的问题是“javax.jms.jmsceception:服务器未知的连接”,这并没有告诉我多少,您可以在日志末尾看到它。 您可以从以下日志中看到它- 2017-10-13 15:40:

我正在使用Tibjmsjar进行JMS连接,它在正常情况下可以正常工作,但在与JMS提供程序的连接丢失后又返回时,我遇到了问题。为了重现该问题,我执行了以下步骤-

  • 连接到intranet并启动服务器。很好

  • 断开与内部网的连接。它开始尝试重新连接服务器。好的

  • 再次连接到内部网。它抛出未知异常,不再连接。问题

  • 因此,我的问题是“javax.jms.jmsceception:服务器未知的连接”,这并没有告诉我多少,您可以在日志末尾看到它。

    您可以从以下日志中看到它-

    2017-10-13 15:40:52,333 [     http-nio-8080-exec-2] INFO  org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'dispatcherServlet': initialization completed in 37 ms
    2017-10-13 15:41:29,293 [k Reader (Server-3285015)] ERROR com.example.jms.PaxJmsClient - Exception received from jms
    javax.jms.JMSException: Disconnected from ssl://10.10.10.10:5071, will attempt to reconnect
        at com.tibco.tibjms.TibjmsConnection._invokeOnExceptionCallback(TibjmsConnection.java:2132)
        at com.tibco.tibjms.TibjmsConnection._reconnect(TibjmsConnection.java:1912)
        at com.tibco.tibjms.TibjmsConnection$ServerLinkEventHandler.onEventReconnect(TibjmsConnection.java:387)
        at com.tibco.tibjms.TibjmsxLinkTcp._doReconnect(TibjmsxLinkTcp.java:598)
        at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.work(TibjmsxLinkTcp.java:317)
        at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.run(TibjmsxLinkTcp.java:259)
    2017-10-13 15:42:29,334 [k Reader (Server-3285015)] ERROR com.example.jms.PaxJmsClient - Exception received from jms
    javax.jms.JMSException: Reconnecting to ssl://11.11.11.11:5071, attempt 1 out of 100
        at com.tibco.tibjms.TibjmsConnection._invokeOnExceptionCallback(TibjmsConnection.java:2132)
        at com.tibco.tibjms.TibjmsConnection._reconnect(TibjmsConnection.java:1975)
        at com.tibco.tibjms.TibjmsConnection$ServerLinkEventHandler.onEventReconnect(TibjmsConnection.java:387)
        at com.tibco.tibjms.TibjmsxLinkTcp._doReconnect(TibjmsxLinkTcp.java:598)
        at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.work(TibjmsxLinkTcp.java:317)
        at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.run(TibjmsxLinkTcp.java:259)
    2017-10-13 15:42:32,335 [k Reader (Server-3285015)] ERROR com.example.jms.PaxJmsClient - Exception received from jms
    javax.jms.JMSException: Reconnecting to ssl://10.10.10.10:5071, attempt 1 out of 100
        at com.tibco.tibjms.TibjmsConnection._invokeOnExceptionCallback(TibjmsConnection.java:2132)
        at com.tibco.tibjms.TibjmsConnection._reconnect(TibjmsConnection.java:1975)
        at com.tibco.tibjms.TibjmsConnection$ServerLinkEventHandler.onEventReconnect(TibjmsConnection.java:387)
        at com.tibco.tibjms.TibjmsxLinkTcp._doReconnect(TibjmsxLinkTcp.java:598)
        at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.work(TibjmsxLinkTcp.java:317)
        at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.run(TibjmsxLinkTcp.java:259)
    2017-10-13 15:43:35,358 [k Reader (Server-3285015)] ERROR com.example.jms.PaxJmsClient - Exception received from jms
    javax.jms.JMSException: Reconnecting to ssl://11.11.11.11:5071, attempt 2 out of 100
        at com.tibco.tibjms.TibjmsConnection._invokeOnExceptionCallback(TibjmsConnection.java:2132)
        at com.tibco.tibjms.TibjmsConnection._reconnect(TibjmsConnection.java:1975)
        at com.tibco.tibjms.TibjmsConnection$ServerLinkEventHandler.onEventReconnect(TibjmsConnection.java:387)
        at com.tibco.tibjms.TibjmsxLinkTcp._doReconnect(TibjmsxLinkTcp.java:598)
        at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.work(TibjmsxLinkTcp.java:317)
        at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.run(TibjmsxLinkTcp.java:259)
    2017-10-13 15:43:38,359 [k Reader (Server-3285015)] ERROR com.example.jms.PaxJmsClient - Exception received from jms
    javax.jms.JMSException: Reconnecting to ssl://10.10.10.10:5071, attempt 2 out of 100
        at com.tibco.tibjms.TibjmsConnection._invokeOnExceptionCallback(TibjmsConnection.java:2132)
        at com.tibco.tibjms.TibjmsConnection._reconnect(TibjmsConnection.java:1975)
        at com.tibco.tibjms.TibjmsConnection$ServerLinkEventHandler.onEventReconnect(TibjmsConnection.java:387)
        at com.tibco.tibjms.TibjmsxLinkTcp._doReconnect(TibjmsxLinkTcp.java:598)
        at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.work(TibjmsxLinkTcp.java:317)
        at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.run(TibjmsxLinkTcp.java:259)
    2017-10-13 15:44:41,368 [k Reader (Server-3285015)] ERROR com.example.jms.PaxJmsClient - Exception received from jms
    javax.jms.JMSException: Reconnecting to ssl://11.11.11.11:5071, attempt 3 out of 100
        at com.tibco.tibjms.TibjmsConnection._invokeOnExceptionCallback(TibjmsConnection.java:2132)
        at com.tibco.tibjms.TibjmsConnection._reconnect(TibjmsConnection.java:1975)
        at com.tibco.tibjms.TibjmsConnection$ServerLinkEventHandler.onEventReconnect(TibjmsConnection.java:387)
        at com.tibco.tibjms.TibjmsxLinkTcp._doReconnect(TibjmsxLinkTcp.java:598)
        at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.work(TibjmsxLinkTcp.java:317)
        at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.run(TibjmsxLinkTcp.java:259)
    2017-10-13 15:44:45,951 [k Reader (Server-3285015)] ERROR com.example.jms.PaxJmsClient - Exception received from jms
    javax.jms.JMSException: Reconnecting to ssl://10.10.10.10:5071, attempt 3 out of 100
        at com.tibco.tibjms.TibjmsConnection._invokeOnExceptionCallback(TibjmsConnection.java:2132)
        at com.tibco.tibjms.TibjmsConnection._reconnect(TibjmsConnection.java:1975)
        at com.tibco.tibjms.TibjmsConnection$ServerLinkEventHandler.onEventReconnect(TibjmsConnection.java:387)
        at com.tibco.tibjms.TibjmsxLinkTcp._doReconnect(TibjmsxLinkTcp.java:598)
        at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.work(TibjmsxLinkTcp.java:317)
        at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.run(TibjmsxLinkTcp.java:259)
    2017-10-13 15:44:50,525 [k Reader (Server-3285015)] ERROR com.example.jms.PaxJmsClient - Exception received from jms
    javax.jms.JMSException: Connection unknown by server
        at com.tibco.tibjms.Tibjmsx.buildException(Tibjmsx.java:659)
        at com.tibco.tibjms.TibjmsConnection._invokeOnExceptionCallback(TibjmsConnection.java:2114)
        at com.tibco.tibjms.TibjmsConnection._onDisconnected(TibjmsConnection.java:2487)
        at com.tibco.tibjms.TibjmsConnection$ServerLinkEventHandler.onEventDisconnected(TibjmsConnection.java:367)
        at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.work(TibjmsxLinkTcp.java:328)
        at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.run(TibjmsxLinkTcp.java:259)
    
    我的密码-

        @PostConstruct
        public void configurePaxJmsClient() {
    
            try {
                // create Topic Connection Factory
                TibjmsTopicConnectionFactory cf = new TibjmsTopicConnectionFactory(serverUrl);
                cf.setSSLTrustedCertificate(sslCertificatePath);
                cf.setSSLEnableVerifyHostName(false);
                cf.setUserName(username);
                cf.setUserPassword(password);
    
                cf.setReconnAttemptCount(100);
                cf.setReconnAttemptDelay(60000);
                cf.setReconnAttemptTimeout(10000);
    
                cf.setConnAttemptCount(100);
                cf.setConnAttemptDelay(60000);
                cf.setConnAttemptTimeout(10000);
    
                Tibjms.setExceptionOnFTEvents(true);
                Tibjms.setExceptionOnFTSwitch(true);
    
                // creation the connection and install an exception handler
                connection = cf.createTopicConnection(username, password);
                connection.setExceptionListener(this);
    
                // You might also use CLIENT_ACKNOWLEDGE here
                session = connection.createTopicSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);
                Topic topic = session.createTopic(topicName);
    
                // Create the subscriber and install the listener
                TopicSubscriber ts;
                /*if (dsName == null || dsName.length() == 0) {
                    ts = session.createSubscriber(topic);
                } else {
                    ts = session.createDurableSubscriber(topic, dsName);
                }*/
    
                if (dsName == null || dsName.length() == 0) {
                    ts = session.createSubscriber(topic, messageSelector, false);
                } else {
                    ts = session.createDurableSubscriber(topic, dsName, messageSelector, false);
                }
    
                //
                ts.setMessageListener(this);
                connection.start();
    
            } catch (JMSException e) {
                LOGGER.error("Failed to connect with message:" + e.getMessage(), e);
                releaseResources();
            }
        }
    
        @Override
        public void onException(JMSException e) {
            LOGGER.error("Exception received from jms", e);
        }
    
    你们能告诉我这里的问题是什么或者给我指出正确的方向吗


    另外,在Springbean的@PostConstruct中进行jms连接初始化可以吗?

    为什么EMS报告“重新连接失败:id=xxxxx的连接未知”? 此消息表示当客户端尝试重新连接时,EMS服务器没有或不再有客户端连接信息

    可能有两个原因:

  • 参数“ft\U重新连接\U超时”不够高。在客户端重新连接服务器之前,服务器已清除连接。 这可以通过在tibemsd.conf中为“ft_reconnect_timeout”参数设置更高的值来解决。默认值为60秒

  • 参数“ft_reconnect_timeout”是备份服务器等待客户端重新连接的时间量(秒) (在故障转移情况下担任主服务器角色后),此参数以秒为单位指定服务器将保持挂起连接的时间。 如果客户端在此时间段内未重新连接,服务器将从共享状态文件中删除其状态。 如果客户端在“ft_reconnect_timeout”中设置的时间之后尝试重新连接,则服务器没有客户端连接信息,并打印“reconnect failed:connection unknown”消息

  • 因此,我建议您根据您的环境设置该值并进行测试
    如果Ft_reconnect_timeout值很高,则大量连接和连接相关对象会在内存中保留很长时间,可能是内存问题。如果连接正在使用clientID,您可能会遇到“clientID已存在”问题。

    为什么EMS报告“重新连接失败:id=xxxxx的连接未知”? 此消息表示当客户端尝试重新连接时,EMS服务器没有或不再有客户端连接信息

    可能有两个原因:

  • 参数“ft\U重新连接\U超时”不够高。在客户端重新连接服务器之前,服务器已清除连接。 这可以通过在tibemsd.conf中为“ft_reconnect_timeout”参数设置更高的值来解决。默认值为60秒

  • 参数“ft_reconnect_timeout”是备份服务器等待客户端重新连接的时间量(秒) (在故障转移情况下担任主服务器角色后),此参数以秒为单位指定服务器将保持挂起连接的时间。 如果客户端在此时间段内未重新连接,服务器将从共享状态文件中删除其状态。 如果客户端在“ft_reconnect_timeout”中设置的时间之后尝试重新连接,则服务器没有客户端连接信息,并打印“reconnect failed:connection unknown”消息

  • 因此,我建议您根据您的环境设置该值并进行测试
    如果Ft_reconnect_timeout值很高,则大量连接和连接相关对象会在内存中保留很长时间,可能是内存问题。如果连接使用的是clientID,您可能会遇到“clientID已存在”问题。

    您是否仍然存在此问题?是。。你有什么解决办法吗?还是你面临着同样的问题?你还有这个问题吗?是的。。你有什么解决办法吗?还是你面临着同样的问题?