amazon s3 java.net.ConnectException: Connection refused
1,问题描述
(1)通过java api 调用ceph s3 接口中遇到的如下问题:
2013-1-8 21:59:44 com.amazonaws.http.AmazonHttpClient executeHelper 信息: Unable to execute HTTP request: Connection to https://192.168.0.19 refused org.apache.http.conn.HttpHostConnectException: Connection to https://192.168.0.19 refused at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:190) at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:151) at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:125) at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:640) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784) at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:280) at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:165) at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:2949) at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:2921) at com.amazonaws.services.s3.AmazonS3Client.listBuckets(AmazonS3Client.java:499) at com.amazonaws.services.s3.AmazonS3Client.listBuckets(AmazonS3Client.java:507) at haha.main(haha.java:30) Caused by: java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) at java.net.Socket.connect(Socket.java:529) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:550) at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:549) at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180) ... 14 more 2013-1-8 21:59:45 com.amazonaws.http.AmazonHttpClient executeHelper 信息: Unable to execute HTTP request: Connection to https://192.168.0.19 refused org.apache.http.conn.HttpHostConnectException: Connection to https://192.168.0.19 refused at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:190) at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:151) at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:125) at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:640) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784) at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:280) at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:165) at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:2949) at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:2921) at com.amazonaws.services.s3.AmazonS3Client.listBuckets(AmazonS3Client.java:499) at com.amazonaws.services.s3.AmazonS3Client.listBuckets(AmazonS3Client.java:507) at haha.main(haha.java:30) Caused by: java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) at java.net.Socket.connect(Socket.java:529) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:550) at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:549) at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180) ... 14 more 2013-1-8 21:59:46 com.amazonaws.http.AmazonHttpClient executeHelper 信息: Unable to execute HTTP request: Connection to https://192.168.0.19 refused org.apache.http.conn.HttpHostConnectException: Connection to https://192.168.0.19 refused at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:190) at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:151) at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:125) at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:640) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784) at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:280) at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:165) at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:2949) at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:2921) at com.amazonaws.services.s3.AmazonS3Client.listBuckets(AmazonS3Client.java:499) at com.amazonaws.services.s3.AmazonS3Client.listBuckets(AmazonS3Client.java:507) at haha.main(haha.java:30) Caused by: java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) at java.net.Socket.connect(Socket.java:529) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:550) at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:549) at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180) ... 14 more 2013-1-8 21:59:49 com.amazonaws.http.AmazonHttpClient executeHelper 信息: Unable to execute HTTP request: Connection to https://192.168.0.19 refused org.apache.http.conn.HttpHostConnectException: Connection to https://192.168.0.19 refused at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:190) at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:151) at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:125) at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:640) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784) at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:280) at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:165) at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:2949) at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:2921) at com.amazonaws.services.s3.AmazonS3Client.listBuckets(AmazonS3Client.java:499) at com.amazonaws.services.s3.AmazonS3Client.listBuckets(AmazonS3Client.java:507) at haha.main(haha.java:30) Caused by: java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) at java.net.Socket.connect(Socket.java:529) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:550) at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:549) at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180) ... 14 more Exception in thread "main" com.amazonaws.AmazonClientException: Unable to execute HTTP request: Connection to https://192.168.0.19 refused at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:328) at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:165) at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:2949) at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:2921) at com.amazonaws.services.s3.AmazonS3Client.listBuckets(AmazonS3Client.java:499) at com.amazonaws.services.s3.AmazonS3Client.listBuckets(AmazonS3Client.java:507) at haha.main(haha.java:30) Caused by: org.apache.http.conn.HttpHostConnectException: Connection to https://192.168.0.19 refused at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:190) at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:151) at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:125) at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:640) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784) at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:280) ... 6 more Caused by: java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) at java.net.Socket.connect(Socket.java:529) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:550) at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:549) at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180) ... 14 more
(2)源代码:
import java.io.ByteArrayInputStream; import java.io.File; import java.util.List; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.util.StringUtils; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3Client; import com.amazonaws.services.s3.model.Bucket; import com.amazonaws.services.s3.model.CannedAccessControlList; import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest; import com.amazonaws.services.s3.model.GetObjectRequest; import com.amazonaws.services.s3.model.ObjectListing; import com.amazonaws.services.s3.model.ObjectMetadata; import com.amazonaws.services.s3.model.S3ObjectSummary; public class haha { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String accessKey = "R3949EV1BHELWIZXKGJR"; String secretKey = "fmimw6JPDApNC5r+iYknX7JXsvBu8DON3J24Sk1A"; AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey); AmazonS3 conn = new AmazonS3Client(credentials); //conn.setEndpoint("objects.dreamhost.com"); conn.setEndpoint("192.168.0.19"); List<Bucket> buckets = conn.listBuckets(); for (Bucket bucket : buckets) { System.out.println(bucket.getName() + "\t" + StringUtils.fromDate(bucket.getCreationDate())); } } }
(3)library
2,解决办法
根据错误提示在google出了各种提示信息,其中一个有用的是开放http的80端口,按照这个提示做了之后,又提示如下错误:
2013-1-8 22:09:34 com.amazonaws.http.AmazonHttpClient executeHelper
信息: Unable to execute HTTP request: peer not authenticated
javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
说明端口号不是根本问题,,,,最后发现原来只要在路径名前加上“http://“一切问题就都解决了,,
即原代码中
conn.setEndpoint("192.168.0.19");
修改为:
conn.setEndpoint("http://192.168.0.19");
就可以调用ceph s3接口成功。