Commit 78ba3c53 by Ryan Baxter

Cleanup and code review fixes.

parent 56ccc46f
...@@ -11,9 +11,6 @@ ...@@ -11,9 +11,6 @@
include::intro.adoc[] include::intro.adoc[]
== HTTP Clients
== Service Discovery: Eureka Clients == Service Discovery: Eureka Clients
...@@ -2511,3 +2508,14 @@ method to determine whether you want to retry a request given the status code. ...@@ -2511,3 +2508,14 @@ method to determine whether you want to retry a request given the status code.
You can turn off Zuul's retry functionality by setting `zuul.retryable` to `false`. You You can turn off Zuul's retry functionality by setting `zuul.retryable` to `false`. You
can also disable retry functionality on route by route basis by setting can also disable retry functionality on route by route basis by setting
`zuul.routes.routename.retryable` to `false`. `zuul.routes.routename.retryable` to `false`.
== HTTP Clients
Spring Cloud Netflix will automatically create the HTTP client used by Ribbon, Feign, and
Zuul for you. However you can also provide your own HTTP clients customized how you please
yourself. To do this you can either create a bean of type `ClosableHttpClient` if you
are using the Apache Http Cient, or `OkHttpClient` if you are using OK HTTP.
NOTE: When you create your own HTTP client you are also responsible for implementing
the correct connection management strategies for these clients. Doing this improperly
can result in resource management issues.
...@@ -25,6 +25,7 @@ import java.util.ArrayList; ...@@ -25,6 +25,7 @@ import java.util.ArrayList;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.X509TrustManager; import javax.net.ssl.X509TrustManager;
import org.assertj.core.api.Assertions;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.MockingDetails; import org.mockito.MockingDetails;
...@@ -79,10 +80,10 @@ public class OkHttpClientConfigurationTests { ...@@ -79,10 +80,10 @@ public class OkHttpClientConfigurationTests {
@Test @Test
public void testFactories() { public void testFactories() {
assertTrue(OkHttpClientConnectionPoolFactory.class.isInstance(connectionPoolFactory)); Assertions.assertThat(connectionPoolFactory).isInstanceOf(OkHttpClientConnectionPoolFactory.class);
assertTrue(OkHttpClientConfigurationTestApp.MyOkHttpClientConnectionPoolFactory.class.isInstance(connectionPoolFactory)); Assertions.assertThat(connectionPoolFactory).isInstanceOf(OkHttpClientConfigurationTestApp.MyOkHttpClientConnectionPoolFactory.class);
assertTrue(OkHttpClientFactory.class.isInstance(okHttpClientFactory)); Assertions.assertThat(okHttpClientFactory).isInstanceOf(OkHttpClientFactory.class);
assertTrue(OkHttpClientConfigurationTestApp.MyOkHttpClientFactory.class.isInstance(okHttpClientFactory)); Assertions.assertThat(okHttpClientFactory).isInstanceOf(OkHttpClientConfigurationTestApp.MyOkHttpClientFactory.class);
} }
@Test @Test
......
...@@ -28,7 +28,6 @@ import java.util.concurrent.TimeUnit; ...@@ -28,7 +28,6 @@ import java.util.concurrent.TimeUnit;
import org.apache.http.Header; import org.apache.http.Header;
import org.apache.http.StatusLine; import org.apache.http.StatusLine;
import org.apache.http.client.HttpClient; import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.config.RegistryBuilder; import org.apache.http.config.RegistryBuilder;
...@@ -37,6 +36,7 @@ import org.apache.http.impl.client.CloseableHttpClient; ...@@ -37,6 +36,7 @@ import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicHeader; import org.apache.http.message.BasicHeader;
import org.assertj.core.api.Assertions;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.MockingDetails; import org.mockito.MockingDetails;
...@@ -98,10 +98,10 @@ public class ApacheHttpClientConfigurationTests { ...@@ -98,10 +98,10 @@ public class ApacheHttpClientConfigurationTests {
@Test @Test
public void testFactories() { public void testFactories() {
assertTrue(ApacheHttpClientConnectionManagerFactory.class.isInstance(connectionManagerFactory)); Assertions.assertThat(connectionManagerFactory).isInstanceOf(ApacheHttpClientConnectionManagerFactory.class);
assertTrue(ApacheHttpClientConfigurationTestApp.MyApacheHttpClientConnectionManagerFactory.class.isInstance(connectionManagerFactory)); Assertions.assertThat(connectionManagerFactory).isInstanceOf(ApacheHttpClientConfigurationTestApp.MyApacheHttpClientConnectionManagerFactory.class);
assertTrue(ApacheHttpClientFactory.class.isInstance(httpClientFactory)); Assertions.assertThat(httpClientFactory).isInstanceOf(ApacheHttpClientFactory.class);
assertTrue(ApacheHttpClientConfigurationTestApp.MyApacheHttpClientFactory.class.isInstance(httpClientFactory)); Assertions.assertThat(httpClientFactory).isInstanceOf(ApacheHttpClientConfigurationTestApp.MyApacheHttpClientFactory.class);
} }
@Test @Test
......
...@@ -58,7 +58,7 @@ import lombok.NoArgsConstructor; ...@@ -58,7 +58,7 @@ import lombok.NoArgsConstructor;
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = FeignHttpClientUrlTests.TestConfig.class, webEnvironment = WebEnvironment.DEFINED_PORT, value = { @SpringBootTest(classes = FeignHttpClientUrlTests.TestConfig.class, webEnvironment = WebEnvironment.DEFINED_PORT, value = {
"spring.application.name=feignclienturltest", "feign.hystrix.enabled=false", "spring.application.name=feignclienturltest", "feign.hystrix.enabled=false",
"spring.cloud.httpclientfactories.ok.enabled=false" }) "feign.okhttp.enabled=false" })
@DirtiesContext @DirtiesContext
public class FeignHttpClientUrlTests { public class FeignHttpClientUrlTests {
......
...@@ -254,19 +254,6 @@ class SampleCustomZuulProxyApplication { ...@@ -254,19 +254,6 @@ class SampleCustomZuulProxyApplication {
private class CustomApacheHttpClientFactory extends DefaultApacheHttpClientFactory { private class CustomApacheHttpClientFactory extends DefaultApacheHttpClientFactory {
//@Override
//public HttpClientBuilder createBuilder() {
// return HttpClients.custom()
// .setDefaultCookieStore(new BasicCookieStore())
// .setDefaultRequestConfig(RequestConfig.custom()
// .setCookieSpec(CookieSpecs.DEFAULT).build());
//}public CloseableHttpClient createClient(RequestConfig requestConfig, HttpClientConnectionManager connectionManager) {
// return HttpClients.custom().setConnectionManager(connectionManager)
// .setDefaultCookieStore(new BasicCookieStore())
// .setDefaultRequestConfig(RequestConfig.custom()
// .setCookieSpec(CookieSpecs.DEFAULT).build())
// .build();
// }
} }
} }
......
...@@ -30,7 +30,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; ...@@ -30,7 +30,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = RibbonRetryIntegrationTestBase.RetryableTestConfig.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, value = { @SpringBootTest(classes = RibbonRetryIntegrationTestBase.RetryableTestConfig.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, value = {
"zuul.retryable: false", /* Disable retry by default, have each route enable it */ "zuul.retryable: false", /* Disable retry by default, have each route enable it */
"ribbon.okhttp.enabled", "ribbon.okhttp.enabled: true",
"hystrix.command.default.execution.timeout.enabled: false", /* Disable hystrix so its timeout doesnt get in the way */ "hystrix.command.default.execution.timeout.enabled: false", /* Disable hystrix so its timeout doesnt get in the way */
"ribbon.ReadTimeout: 1000", /* Make sure ribbon will timeout before the thread is done sleeping */ "ribbon.ReadTimeout: 1000", /* Make sure ribbon will timeout before the thread is done sleeping */
"zuul.routes.retryable: /retryable/**", "zuul.routes.retryable: /retryable/**",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment