springml / salesforce-wave-api

Java client for Salesforce Wave API
Apache License 2.0
12 stars 9 forks source link

Connector Config must allow proxy setting #4

Open kali786516 opened 6 years ago

kali786516 commented 6 years ago

Looks like createPartnerConnection doesn't allow proxy settings need a change to allow proxy setting. the change will helps organisations who want to leverage spark-salesforce library https://github.com/springml/salesforce-wave-api/blob/master/src/main/java/com/springml/salesforce/wave/util/SFConfig.java https://github.com/springml/salesforce-wave-api/blob/0ac76aeb2221d9e7038229fd352a8694e8cde7e9/src/main/java/com/springml/salesforce/wave/util/SFConfig.java#L96 config.setProxy("company_proxy_server", 9400) ---> company proxy server and port number ....

Thanks Sri

kali786516 commented 6 years ago

Even after changing the code on my local version to accept proxy setting still I am getting connection refused error.

val soql = "select id,OWNERID from object_table" val sfDF = sqlContext.read.format("com.springml.spark.salesforce").option("username", "username3").option("password", "password_with_token").option("login","salsforceweblingk").option("soql", soql).load()

Connection refused (Connection refused) at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:158) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353) at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380) at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88) at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107) at com.springml.salesforce.wave.util.HTTPHelper.execute(HTTPHelper.java:95) at com.springml.salesforce.wave.util.HTTPHelper.get(HTTPHelper.java:75) at com.springml.salesforce.wave.util.HTTPHelper.get(HTTPHelper.java:79) at com.springml.salesforce.wave.impl.ForceAPIImpl.query(ForceAPIImpl.java:120) at com.springml.salesforce.wave.impl.ForceAPIImpl.query(ForceAPIImpl.java:36) at com.springml.spark.salesforce.DatasetRelation.querySF(DatasetRelation.scala:119) at com.springml.spark.salesforce.DatasetRelation.read(DatasetRelation.scala:61) at com.springml.spark.salesforce.DatasetRelation.(DatasetRelation.scala:53) at com.springml.spark.salesforce.DefaultSource.createRelation(DefaultSource.scala:96) at com.springml.spark.salesforce.DefaultSource.createRelation(DefaultSource.scala:54) at com.springml.spark.salesforce.DefaultSource.createRelation(DefaultSource.scala:40) at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:330) at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:152) at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:125) ... 48 elided Caused by: java.net.ConnectException: Connection refused (Connection refused) at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:337) at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:141) ... 71 more

Thanks Sri

it-am commented 3 years ago

Hi All,

My AWS Glue Job is behind a proxy and I am trying to use spark-salesforce and salesforce-wave-api to read/write sfObjects.

I also tried to add config.setProxy("my-proxy-url.foo.bar.com", 3128) here https://github.com/springml/salesforce-wave-api/blob/master/src/main/java/com/springml/salesforce/wave/util/SFConfig.java#L105 and package it using mvn.

AWS Glue Job is behind the proxy and when it runs it fails with the following error (if using customly packaged wave JAR with setProxy added): py4j.protocol.Py4JJavaError: An error occurred while calling o92.save.: org.apache.http.conn.HttpHostConnectException: Connect to rbc7-dev-ed.my.salesforce.com:443 [rbc7-dev-ed.my.salesforce.com/13.110.56.149, rbc7-dev-ed.my.salesforce.com/13.110.63.149, rbc7-dev-ed.my.salesforce.com/13.110.58.149] failed: Connection timed out (Connection timed out) at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:159) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:373) at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:394) at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185) at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) at

and with the following error when using this JAR - https://repo1.maven.org/maven2/com/springml/salesforce-wave-api/1.0.9/salesforce-wave-api-1.0.9.jar: error: java.lang.Exception: com.sforce.ws.ConnectionException: Failed to send request to https://login.salesforce.com/services/Soap/u/35.0 at com.springml.salesforce.wave.util.SFConfig.createPartnerConnection(SFConfig.java:110)

I wonder if anyone was able to find a solution or any workaround for this issue? Thanks! How people use this in case they have a proxy... FYI: @kali786516 @k4jiang @springml @samuel-pt @nhamiltontt any help is highly appreciated!

Mounisha26 commented 1 year ago

HI @kali786516 / @it-am

Any workaround or solution for the connection exception issue. Thanks in advance!

error: java.lang.Exception: com.sforce.ws.ConnectionException: Failed to send request to https://login.salesforce.com/services/Soap/u/35.0 at com.springml.salesforce.wave.util.SFConfig.createPartnerConnection(SFConfig.java:110)