0

が原因で connection.start() が失敗する問題が発生しました。

java.net.ConnectException: Connection refused: connect

javax.jms.TopicConnection次のように、 aでmy をラップするThreadLocalと:

private ThreadLocal<TopicConnection> createThreadLocalTopicConnection(final TopicConnectionFactory cf)
{
    return new ThreadLocal<TopicConnection>() {
        public TopicConnection result;

        protected synchronized TopicConnection initialValue() {
            try {
                // Returns a javax.jms.TopicConnection object.
                result = cf.createTopicConnection();
                result.start();
                return result;
            } catch (JMSException e) {
                throw new RuntimeException(e);
            }
        }

            protected void finalize() throws Throwable {
                if(result!=null) result.close();
            }
        };
    }

TopicConnectionをそのまま変数として作成すると、static問題なく接続されます。ベア変数として機能するのに、ラップされたときにThreadLocal失敗する理由を誰かが説明できますか? 今回、Google は私を見事に裏切った。

4

2 に答える 2