JAVA跨域、RestTemplate高併發下異常與配置、JSON數據Long轉String

跨域支持

import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter;java

@Configuration public class CorsConfig { /** * 跨域支持 * * @return / @Bean public CorsFilter corsFilter() { final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); final CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); // 容許cookies跨域 config.addAllowedOrigin("");// #容許向該服務器提交請求的URI,表示所有容許 config.addAllowedHeader("");// #容許訪問的頭信息,表示所有 config.setMaxAge(18000L);// 預檢請求的緩存時間(秒),即在這個時間段裏,對於相同的跨域請求不會再預檢了 config.addAllowedMethod("");// 容許提交請求的方法,*表示所有容許 source.registerCorsConfiguration("/**", config); return new CorsFilter(source); } }web

RestTemplate高併發下異常與配置

import org.apache.http.client.HttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.web.client.DefaultResponseErrorHandler; import org.springframework.web.client.RestTemplate;spring

/** *apache

  • RestTemplate高併發下異常與配置說明json

  • 一、java.util.ConcurrentModificationException跨域

  • 二、java.net.SocketTimeoutException Connection timed out */ @Configuration public class RestTemplateConfig {緩存

    @Bean @LoadBalanced public RestTemplate restTemplate() { // 長鏈接 PoolingHttpClientConnectionManager pollingConnectionManager = new PoolingHttpClientConnectionManager(); // 總鏈接數 pollingConnectionManager.setMaxTotal(1000); // 同路由的併發數 pollingConnectionManager.setDefaultMaxPerRoute(1000);服務器

    HttpClientBuilder httpClientBuilder = HttpClients.custom();
     httpClientBuilder.setConnectionManager(pollingConnectionManager);

// 重試次數,默認是3次,沒有開啓 // httpClientBuilder.setRetryHandler(new DefaultHttpRequestRetryHandler(3, true)); HttpClient httpClient = httpClientBuilder.build();cookie

HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory(
			httpClient);

// 鏈接超時 ms clientHttpRequestFactory.setConnectTimeout(12000); // 數據讀取超時時間,即SocketTimeout ms clientHttpRequestFactory.setReadTimeout(12000); // 鏈接不夠用的等待時間,不宜過長,必須設置,好比鏈接不夠用時,時間過長將是災難性的 clientHttpRequestFactory.setConnectionRequestTimeout(200); // 緩衝請求數據,默認值是true。經過POST或者PUT大量發送數據時,建議將此屬性更改成false,以避免耗盡內存。 // clientHttpRequestFactory.setBufferRequestBody(false);併發

RestTemplate restTemplate = new RestTemplate();
	restTemplate.setRequestFactory(clientHttpRequestFactory);
	restTemplate.setErrorHandler(new DefaultResponseErrorHandler());

	return restTemplate;
}

}

json數據Long爲String

/** *

  • @description: 返回json是轉換long爲string
  • @create: 2019-08-02 17:49 **/ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.List;

@EnableWebMvc @Configuration public class WebDataConvertConfig implements WebMvcConfigurer { @Override public void configureMessageConverters(List<httpmessageconverter<?>> converters) { MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); ObjectMapper objectMapper = new ObjectMapper(); /** * 序列換成json時,將全部的long變成string * 由於js中得數字類型不能包含全部的java long值 */ SimpleModule simpleModule = new SimpleModule(); simpleModule.addSerializer(Long.class, ToStringSerializer.instance); simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance); objectMapper.registerModule(simpleModule); jackson2HttpMessageConverter.setObjectMapper(objectMapper); converters.add(jackson2HttpMessageConverter); }

}

> 本文由做者pm1024:JAVA實驗手冊 發佈,交流:583284584! </httpmessageconverter<?>

相關文章
相關標籤/搜索