2016-10-07 40 views
0

我正在與第三方進行整合,第三方爲我們提供了Azure服務總線隊列以接收消息。 (我們使用的0.9.0 Azure的罐子從下載鏈接https://azure.microsoft.com/en-us/documentation/articles/java-download-azure-sdk/我可以在Java SDK 0.9.0中爲Azure服務總線連接設置代理嗎?

我成立了像這樣的連接:

Configuration config = new Configuration(); 
config = ServiceBusConfiguration.configureWithConnectionString(null, config, connectionString); 
ServiceBusContract azureService = ServiceBusService.create(config); 

和接收消息,像這樣:

ReceiveQueueMessageResult resultQM = azureService.receiveQueueMessage(queueName, receiveMessageOptions); 

這在正常情況下工作正常。然而,在辦公室,我必須去通過代理,並且連接失敗,此錯誤:

com.microsoft.windowsazure.exception.ServiceException: com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection timed out: connect 
    at com.microsoft.windowsazure.services.servicebus.implementation.ServiceBusExceptionProcessor.receiveQueueMessage(ServiceBusExceptionProcessor.java:141) 
    at com.mycompany.dr.theircompany.TheirCompanyDataListener.receiveMessage(TheirCompanyDataListener.java:127) 
    at com.mycompany.dr.theircompany.TheirCompanyDataListener.lambda$0(TheirCompanyDataListener.java:75) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection timed out: connect 
    at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:151) 
    at com.microsoft.windowsazure.services.servicebus.implementation.AuthorizationFilter.handle(AuthorizationFilter.java:39) 
    at com.microsoft.windowsazure.core.pipeline.jersey.ClientFilterRequestAdapter.handle(ClientFilterRequestAdapter.java:35) 
    at com.sun.jersey.api.client.Client.handle(Client.java:648) 
    at com.sun.jersey.api.client.WebResource.handle(WebResource.java:680) 
    at com.sun.jersey.api.client.WebResource.post(WebResource.java:251) 
    at com.microsoft.windowsazure.services.servicebus.implementation.ServiceBusRestProxy.receiveMessage(ServiceBusRestProxy.java:248) 
    at com.microsoft.windowsazure.services.servicebus.implementation.ServiceBusRestProxy.receiveQueueMessage(ServiceBusRestProxy.java:216) 
    at com.microsoft.windowsazure.services.servicebus.implementation.ServiceBusExceptionProcessor.receiveQueueMessage(ServiceBusExceptionProcessor.java:137) 
    ... 3 more 
Caused by: java.net.ConnectException: Connection timed out: connect 
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) 
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source) 
    at java.net.PlainSocketImpl.connect(Unknown Source) 
    at java.net.SocksSocketImpl.connect(Unknown Source) 
    at java.net.Socket.connect(Unknown Source) 
    at sun.security.ssl.SSLSocketImpl.connect(Unknown Source) 
    at sun.net.NetworkClient.doConnect(Unknown Source) 
    at sun.net.www.http.HttpClient.openServer(Unknown Source) 
    at sun.net.www.http.HttpClient.openServer(Unknown Source) 
    at sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source) 
    at sun.net.www.protocol.https.HttpsClient.New(Unknown Source) 
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) 
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(Unknown Source) 
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source) 
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(Unknown Source) 
    at com.sun.jersey.client.urlconnection.URLConnectionClientHandler$1$1.getOutputStream(URLConnectionClientHandler.java:234) 
    at com.sun.jersey.api.client.CommittingOutputStream.commitWrite(CommittingOutputStream.java:117) 
    at com.sun.jersey.api.client.CommittingOutputStream.flush(CommittingOutputStream.java:100) 
    at sun.nio.cs.StreamEncoder.implFlush(Unknown Source) 
    at sun.nio.cs.StreamEncoder.flush(Unknown Source) 
    at java.io.OutputStreamWriter.flush(Unknown Source) 
    at java.io.BufferedWriter.flush(Unknown Source) 
    at com.sun.jersey.core.util.ReaderWriter.writeToAsString(ReaderWriter.java:191) 
    at com.sun.jersey.core.provider.AbstractMessageReaderWriterProvider.writeToAsString(AbstractMessageReaderWriterProvider.java:128) 
    at com.sun.jersey.core.impl.provider.entity.StringProvider.writeTo(StringProvider.java:88) 
    at com.sun.jersey.core.impl.provider.entity.StringProvider.writeTo(StringProvider.java:58) 
    at com.sun.jersey.api.client.RequestWriter.writeRequestEntity(RequestWriter.java:300) 
    at com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke(URLConnectionClientHandler.java:213) 
    at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:149) 
    ... 11 more 

現在,當我看documentation爲com.microsoft.windowsazure.Configuration,它顯示常量兩個屬性:

  • PROPERTY_HTTP_PROXY_HOST(字符串值 「http.proxyHost」)
  • PROPERTY_HTTP_PROXY_PORT(字符串值 「把http.proxyPort」)

但是,這些常量似乎不存在於0.9.0中。我已經嘗試使用字符串文字向配置添加屬性,但是這並沒有明顯的效果。

我是否在正確的軌道上?有沒有辦法在0.9.0中設置服務總線合同的代理?

回答

0

根據類別Configuration的源代碼,將屬性PROPERTY_HTTP_PROXY_HOST & PROPERTY_HTTP_PROXY_PORT定義爲靜態最終變量。所以你不能通過方法setProperty來改變它們的值。

據我所知,支持Java代理的方法有兩種,可以在當前場景中使用。

  1. 命令行JVM設置:代理設置經由命令行參數提供給JVM:

    的java -Dhttp.proxyHost = proxyhostURL -Dhttp.proxyPort = proxyPortNumber -Dhttp.proxyUser = someUserName -Dhttp .proxyPassword = somePassword

  2. 在代碼中設置系統屬性在Java代碼中添加以下行,以便JVM使用代理進行HTTP調用。這當然會要求你重新編譯你的Java源代碼。 (其他方法不需要任何重新編譯):

    System.setProperty(「http.proxyPort」,「someProxyPort」); System.setProperty(「http.proxyUser」,「someUserName」); System.setProperty(「http.proxyPassword」,「somePassword」); System.setProperty(「http。ProxyHost的」, 「someProxyURL」);

爲網絡&代理的更多信息Java中&屬性,請參考http://docs.oracle.com/javase/7/docs/technotes/guides/net/proxies.htmlhttp://docs.oracle.com/javase/7/docs/technotes/guides/net/properties.html

+0

我認爲你曲解的配置代碼'PROPERTY_HTTP_PROXY_HOST'和'PORT'與'setProperty'方法一起使用來爲'properties'地圖添加值。 我嘗試了系統屬性,但它們似乎沒有被尊重,我仍然無法連接。 – sjohnston

相關問題