2012-03-25 4 views
1

Я кодирую инструмент командной строки для управления службой S3. на моей локальной машине, все работает, но на сервере, где он должен быть выполнен, выдает следующее сообщение:соединение отказано в java amazon SDK для службы S3

Error Message: Unable to execute HTTP request: Connection to http://s3.amazonaws.com refused 

я сделать соединение со следующим кодом:

s3 = new AmazonS3Client(credentials,clientConf); 

clientConf только устанавливает протокол к HTTP, поскольку я подозревал, что, возможно, может возникнуть проблема с подключением к HTTPS, но у меня такой же результат.

Теперь, сервер имеет следующую конфигурацию:

DEBiAN 6 64 битых

ЛАМПА, установленные из источника

OpenSSL установлен от источника

Java, установленный из пакетов распределения пакетов

это сетевая конфигурация:

auto eth0 
iface eth0 inet static 

address XX.XX.XX.XX 
netmask 255.255.255.255 
broadcast XX.XX.XX.XX (same as address) 

auto eth0:0 
iface eth0:0 inet static 

address XX.XX.XX.XX 
netmask 255.255.255.255 
broadcast XX.XX.XX.XX (same as address) 

auto eth0:1 
iface eth0:1 inet static 

address XX.XX.XX.XX 
netmask 255.255.255.255 
broadcast XX.XX.XX.XX (same as address) 

post-up route add 10.255.255.1 dev eth0 
post-up route add default gw 10.255.255.1 

wget, telnet, curl, все работает, кроме этого, у меня есть 3 сетевых интерфейса, так как у меня есть 2 SSL и еще один ip для других сайтов.

Как настроить клиентскую систему для выполнения этой работы? является проблемой Java? проблема с сетью? по крайней мере, как я могу получить дополнительную информацию об отладке? я попытался поймать исключение AmazonClientException, но не работает.

Заранее благодарен

С уважением.

ответ

2

This has been reported as a bug in the Amazon S3 API. Quot [email protected]:

Это, кажется, ошибка в SDK. Проблема заключается в том, что объект конфигурации клиента используется совместно с клиентом службы безопасности Token Service , который DynamoDB использует для установления сеанса, и он (в отличие от Dynamo) не принимает протокол HTTP. Есть несколько обходных путей:

1) Создайте свой собственный экземпляр STSSessionCredentialsProvider и предоставить его вашему клиенту DynamoDB или

2) Вместо указания протокола в ClientConfiguration, указать его с помощью вызова setEndpoint ("http: // ...")

Мы обсудим решения этой ошибки.

Я бы порекомендовал использовать одно из следующих методов: Удачи, чтобы ваше соединение успешно работало.

(Additional documentation and workarounds)

+0

я попытался это, но, кажется, что не работает с S3, я все еще с той же проблемой. –

+0

@shadow_of__soul Hmn. Тогда это затруднительное положение!Как вы говорите, у вас есть желание получить дополнительную информацию об отладке, которую вы можете использовать для отслеживания проблемы. Можете ли вы запустить своего клиента в отладчике (например, в средствах отладки, предоставляемых IntelliJ или Eclipse), и установить точку останова непосредственно перед возникновением исключения? В этом случае, что происходит, когда вы просто ловите (Exception e) '(который, в частности, поймает' RuntimeException') при попытке подключения? Мне жаль идти со стандартным советом здесь, но у меня нет хороших оценок того, что вы пробовали. – MrGomez

+0

проблема в том, что это происходит только на сервере, локально код работает отлично. есть ли все-таки запустить отладчик из командной строки? (я запускаю приложение с java -jar app.jar') –