如何在使用具有线程超时功能的ExecutorService时提高性能?
我不是多线程专家,但是我看到了当前使用ExecutorService的代码的一些性能问题. 我正在研究一个项目,我需要将HTTP URL调用到我的服务器,并且是否花费太长时间来响应然后暂停呼叫.目前,它正在返回简单的JSON字符串. 当前的要求我有10 ms.在10 ms中,它应该能够从服务器中获取数据.我猜这是可能的,因为它只是同一数据中心内对服务器的HTTP调用. 我的客户端程序和实际服务器在同一数据中心内,ping时间延迟在它们之间,因此应该可以肯定可行. 我正在使用RestTemplate为此进行url调用. 以下是我为我写的代码,它使用ExecutorService和Callables - public class URLTest { private ExecutorService executor = Executors.newFixedThreadPool(10); public String getData() {
0 2023-05-24
编程技术问答社区
Spring RestTemplate调用webservice的错误和分析状态代码
我设计了一个Web服务以执行任务(如果请求参数还可以),或者返回401未经授权的HTTP状态代码(如果请求参数是错误的). 我正在使用RestTemplate进行测试,如果WebService成功回复了HTTP 200 OK状态.但是,我无法测试HTTP 401错误,因为RestTemplate本身会引发异常. 我的测试方法是 @Test public void testUnauthorized() { Map params = new HashMap(); ResponseEntity response = restTemplate.postForEntity(url, params, Map.class); Assert.assertEquals(HttpStatus.UNAUTHORIZED, response.getStatusCode()); Assert.asse
2 2023-05-22
编程技术问答社区
java.security.NoSuchAlgorithmException:(算法: 默认,提供者: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext)
我尝试了网络中的许多解决方案.但是似乎没有解决方案适合我. 我们最近将Tomcat Server 8.0.x升级为8.5.x.有8.0.x一切正常.但是,升级后,当我们尝试通过HTTPS从Java的Spring restTemplate连接到服务器时,我们将面临此错误. 通过HTTP连接时,我没有看到任何错误. ":java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext); nested exception is java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructin
0 2023-05-22
编程技术问答社区
通过httpentity将请求体作为json发送到GET请求中
示例请求主体作为JSON发送get申请外部API的请求. 以下是示例json需要在请求正文中添加以通过get request发送 到外部API: ''' {"nameidentify":["Name-1","Name-2","Name-3"]} ''' 'Assume i am getting values from one API like.. "Name-1","Name-2","Name-3" those values i need to pass to other API through GET request.For example below i am hardcoding the values for reference...' ''' String[] namesArray=
4 2023-05-22
编程技术问答社区
如何使用RestTemplate从服务器上接收应用程序/pdf响应
我正在尝试捕获我的Java客户端代码提出的HTTP请求的响应.响应的内容类型为application/pdf.在日志中,我可以看到服务器在 中发送了一个响应 Object result = getRestTemplate().postForObject(urlString, formDataHttpEntity, returnClassObject, parametersMapStringString); 我会收到以下JUNIT错误: org.springframework.web.client.restclientException:无法提取响应:找不到适合响应类型的httpmessageconverter [java.lang.Object]和内容类型[application/pdf] 我需要做些什么才能克服这一点?我的最终目标是将其放入byte[]中,然后将其推入Blob Type 的DB表字段 注意:我从服务器获得以下响应标头 http/1.1
0 2023-05-22
编程技术问答社区
使用RestTemplate从JSON填充对象失败
我与WebSecrpits一起工作,我想从JSON创建一个对象.我使用RESTTEMPLATE做到这一点: MetaData entity = restTemplate.postForObject(url + "?alf_ticket={ticket}", requestEntity, MetaData.class, _ticket); 但是问题是我遇到了这个错误: Exception in thread "main" org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: No suitable constructor found for type [simple type, class custom.alfresco.logic.connect.models.MetaData$Item]: can not instantiate from JSO
0 2023-05-20
编程技术问答社区
用RestTemplate将JSON字符串(包括不同的梯度)转换为Java类
我有一个JSON字符串,例如: { "name": "abc", "type": "type1", "artist": { "name": "ally" }, "other_part": "{\"id\":\"ee50abd7\",\"metadata\":"...\"}" } 就像您看到的那样," elets_part"看起来像是宽大的格式.它带有引号标记. 在这里,我只想将其转换为POJO类.但是其他_part给出解析错误.任何建议. pojo类: class Data { private String name; private String type; private Artist artist; private Other other_part; ...getters } class Artist { private String name; ...getters
2 2023-05-16
编程技术问答社区
如何使用REST模板弹簧MVC获取大JSON,而不会在Java中没有内存问题
当我从休息服务获得大json时,我会收到java.lang.outofmemoryerror:java堆空间... 这是在〜1000拨打休息服务 之后发生的 HttpEntity requestUpdate = new HttpEntity(request, httpHeaders); ResponseEntity messageEntity = restTemplate.exchange(getEndPointAddress(), HttpMethod.POST, requestUpdate, String.class); Map map = gson.fromJson(Helper.cleanJson(messageEntity.getBody()), Map.class); java.lang.OutOfMemoryError: Java heap
0 2023-05-15
编程技术问答社区
如何在我的HttpClient执行器中遵循单一责任原则?
我正在使用 RestTemplate 作为我的HttpClient执行URL,服务器将返回JSON字符串作为响应.客户将通过传递DataKey对象userId来调用此库. 使用给定的userId,我将找出可以击中数据的机器,然后将这些机器存储在LinkedList中,以便我可以顺序执行它们. 之后,我将检查第一个主机名是否在块列表中.如果块列表中不存在,那么我将在列表中使用第一个主机名制作一个URL并执行它,如果响应成功,请返回响应.但是,假设如果第一个主机名在块列表中,我将尝试在列表中获取第二个主机名并制作URL并执行它,因此,基本上, 首先找到不在中的主机名制作URL之前的块列表 . 现在,假设如果我们选择了不在块列表中的第一个主机名并执行了URL,并且以某种方式响应了或不响应,那么我将在列表中执行第二个主机名,并继续执行此操作,直到您得到一个成功的回应. ,但请确保它们也不在块列表中 如果所有服务器都在下降或在块列表中,那么我可以简单地记录并返回服务不可用的错误.
2 2023-05-09
编程技术问答社区
带有动态密钥
我在使用Java Spring RESTTEMPLATE完成的HTTP请求中获得了JSON键值对对象的响应. . . 响应: { "1234x": { "id": "1234x", "description": "bla bla", ... }, "5678a": { "id": "5678a", "description": "bla bla bla", ... }, ... } 如何将响应对象映射到pojo或地图? 我正在使用RESTTEMPLATE如下. RestTemplate restTemplate = new RestTemplate(); String url = "my url"; HttpHeaders headers = new HttpHeaders(); HttpEntity entity = n
4 2023-05-07
编程技术问答社区
如何在OAuth2RestTemplate中更改MappingJacksonHttpMessageConverter的MediaType
我有一个使用Spring Source OAuth2作为S客户端的应用程序来从资源服务器检索用户数据并创建本地用户.当Oauth2ClientContextFilter试图检索令牌时,我会一直遇到错误: org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [org.springframework.security.oauth2.common.OAuth2AccessToken] and content type [application/x-javascript;charset=utf-8] 我了解默认介质是"应用程序/json",因此我尝试自定义MappingJacksonhtpMessageConverter,例如:
4 2023-05-02
编程技术问答社区
取消/中止/中断一个spring-android resttemplate请求
我在专门执行Spring Android请求的线程中使用Spring Android. 我无法取得中止从Spring Android启动的请求(例如GetForObject). 我尝试: 到达基础输入流以关闭,但它完全包裹在Springandroid Restemplate中,无法从外部访问 中断线程 获取休息模板的请求工厂并致电销毁 获取工厂的连接经理并致电关闭 更改休息模板工厂的HTTP客户端 更改休息模板工厂的请求工厂 ,但我不能中止一个请求,并迅速发送新请求.第一个必须超时. 我如何"杀死"弹簧Android请求获取稳定的休息模板以发送新请求? 预先感谢. 解决方案 我建议使用Response Extractor. 您可以调用诸如下面的rettemplate的执行方法. File file = (File) restTemplate.execute(rootUrl.concat("/vocasets/{vo
10 2023-04-21
编程技术问答社区
带有Spring Cloud和Eureka的Ribbon:java.lang.IllegalStateException。没有Samarths-MacBook-Pro.local的实例可用。
我正在使用带有色带负载平衡器的Spring Boot Eureka客户端应用程序. 我有两个在尤里卡注册的服务器的实例,名称为" test".在客户端,我有以下代码从尤里卡(Eureka)获取服务器. @Configuration @ComponentScan @EnableAutoConfiguration @EnableEurekaClient @RestController public class EurekaConsumerApplication { @Autowired DiscoveryClient discoveryClient; @Autowired RestTemplate restTemplate; @RequestMapping(value = "/",method = RequestMethod.GET) String consumer(){ InstanceInfo instan
12 2023-04-21
编程技术问答社区
Spring RestTemplate调用API成功,但由于同源政策,jQuery失败了
当我使用Spring RestTemplate调用REST API时. public class JiraBusImpl implements JiraBus { private RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = BusUtils.createHttpHeaderWithDefaultBasicAuth(); @Override public List getProjects() { HttpEntity request = new HttpEntity(headers); ResponseEntity response = restTemplate.exchange("http://jira_url:port/rest/api/2/project",
10 2023-04-07
编程技术问答社区
如何在多线程应用程序中有效使用RestTemplate?
我在一个库中使用RestTemplate作为我的HttpClient.我不确定我是否在多线程环境中正确使用它,因为我的库将在多线程环境中非常重的负载下使用,因此必须非常快. 下面是我的数据级类别: public class DataClient implements Client { private RestTemplate restTemplate = new RestTemplate(clientHttpRequestFactory()); private ExecutorService executor = Executors.newFixedThreadPool(10); // for synchronous call @Override public DataResponse executeSync(DataKey key) { DataResponse dataResponse = null;
2 2023-04-06
编程技术问答社区
如何有效地使用HttpComponentsClientHttpRequestFactory和RestTemplate?
我正在使用 restTemplate 以及其工厂 httpcomponentsclienthttprequestfactory 在我的一个项目中.在此项目中,我需要对我的服务器进行HTTP URL调用,该服务器正在运行RESTFUL服务,该服务将响应返回为JSON字符串. 以下是我的代码 - public class GetUserClientData { public String getData(KeyHolder keys) { return new HTTPRequestAccess(keys).makeHttpRequest(); } } 下面是我的班级,它包裹了httpclient零件 - public class HTTPRequestAccess { // should this be static? private RestTemplate restTemplate; private Ke
22 2023-04-06
编程技术问答社区
在一个库中实现同步和异步方法的正确方法是什么?
我需要制作一个我的同步和异步功能的库. executeSynchronous() - 等到我得到结果,返回结果. executeAsynchronous() - 如果需要,可以立即返回未来,可以在其他事情完成后处理. 我的库的核心逻辑 客户将使用我们的库,他们将通过通过DataKey构建器对象来称呼它.然后,我们将通过使用该DataKey对象构造URL,并通过执行http client call call to nut urol,然后在将响应恢复为JSON字符串之后,我们将将该JSON字符串发送给我们的客户,因为它是通过创建DataResponse对象.有些客户会致电executeSynchronous(),有些客户可能会调用executeAsynchronous()方法,所以这就是为什么我需要在库中分别提供两种方法. 接口: public interface Client { // for synchronous public Data
0 2023-04-06
编程技术问答社区
如何使用RestTemplate为每个请求设置RequestConfiguration?
我有一个被客户使用的库,并且他们通过DataRequest对象,其中包含userid,timeout以及其中的其他一些字段.现在,我使用此DataRequest对象制作URL,然后使用RestTemplate进行HTTP调用,我的服务返回了一个JSON响应,我用它来制作DataResponse对象,然后返回此DataResponse对象给他们. 以下是我的DataClient通过将DataRequest对象传递给它的DataClient类.我正在使用客户在DataRequest中传递的超时值,如果请求在getSyncData方法中花费太多时间. public class DataClient implements Client { private final RestTemplate restTemplate = new RestTemplate(); private final ExecutorService service = Executors.new
12 2023-04-05
编程技术问答社区
当我的线程被中断时,我如何中断RestTemplate调用?
我需要制作一个我的同步和异步功能的库. executeSynchronous() - 等到我得到结果,返回结果. executeAsynchronous() - 如果需要,可以立即返回未来,可以在其他事情完成后处理. 我的库的核心逻辑 客户将使用我们的库,他们将通过通过DataKey构建器对象来称呼它.然后,我们将通过使用该DataKey对象构造URL,并通过执行http client call call to nut urol,然后在将响应恢复为JSON字符串之后,我们将将该JSON字符串发送给我们的客户,因为它是通过创建DataResponse对象.有些客户会致电executeSynchronous(),有些客户可能会拨打executeAsynchronous(),所以这就是为什么我需要在库中分别提供两种方法. 接口: public interface Client { // for synchronous public DataRe
4 2023-04-05
编程技术问答社区
如何在多线程环境中有效使用RestTemplate?
我正在研究一个项目,我需要在该项目中呼叫http URL调用,该项目正在运行Restful Service,该项目将响应返回为JSON字符串. 以下是我使用future和callables - 的主要代码 public class TimeoutThreadExample { private ExecutorService executor = Executors.newFixedThreadPool(10); public String getData() { Future future = executor.submit(new Task()); String response = null; try { response = future.get(100, TimeUnit.MILLISECONDS); } catch (TimeoutExcept
6 2023-04-05
编程技术问答社区