2016-10-07 5 views
0

私は、メッセージを受信するためにAzureサービスバスキューを提供している第三者と統合しています。そのようなメッセージをJava SDK 0.9.0でAzureサービスバス接続のプロキシを設定できますか?

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

と受信::私はそうのような接続を設定

(我々はhttps://azure.microsoft.com/en-us/documentation/articles/java-download-azure-sdk/でダウンロードリンクから0.9.0 Azureの瓶を使用している)

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

通常の状況下では正常に動作します。しかし、オフィスで、私はプロキシを通過する必要があり、接続がこのエラーで失敗します。私はcom.microsoft.windowsazure.Configurationためdocumentationを見ると、今

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 

、それはのための定数を示しています二つの特性:

  • 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のプロキシをサポートする方法は2通りあります。

  1. コマンドラインJVM設定:プロキシ設定がコマンドライン引数を経由してJVMに与えられる。

    のjavaます。-Dhttp.proxyHost = proxyhostURL -Dhttp.proxyPort = proxyPortNumber -Dhttp.proxyUser = someUserName -Dhttp .proxyPassword = somePassword

  2. コード内のシステムプロパティの設定JVMがプロキシを使用してHTTP呼び出しを行うように、Javaコードに次の行を追加します。これはもちろん、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

関連する問題