が原因で 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 は私を見事に裏切った。