この同じコードが異なる結果になるのはなぜですか?
Redis への接続を作成するために Jedis 2.1.0 を使用しています。
方法 A:
private static Jedis getNewJedis() {
return new Jedis(hostname,port);
}
.....
public static main(String[] args){
getNewJedis().ping();
}
方法 B:
public static main(String[] args){
new Jedis(hostname,port).ping();
}
違いは、再利用を容易にするためにメソッド A が静的メソッドに隠されているため、呼び出されたときにメソッド B と同じ効果があるはずだと考えています。
代わりに、メソッド A を使用すると例外が発生します。メソッド B は正常に動作します。
方法 A 例外:
スレッド「メイン」の例外 redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: 接続が拒否されました: redis.clients.jedis.Connection.connect(Connection.java:134) で redis.clients.jedis に接続します。 redis.clients.jedis.Connection.sendCommand(Connection.java:86) の BinaryClient.connect(BinaryClient.java:69) redis.clients.jedis.BinaryClient.ping(BinaryClient.java:82) の redis.clients.jedis .Jedis.ping(Jedis.java:34) at org.tripodwire.esme.receiver.ReceiverProducer.produceTestJedis(ReceiverProducer.java:168) at org.tripodwire.esme.entry.Entry.main(Entry.java:25)