private void executeReceiveRequest(final TransportRequest transportRequest, final URI url, final HttpHeaders headers, final XhrClientSockJsSession session, final SettableListenableFuture<WebSocketSession> connectFuture) { if (logger.isTraceEnabled()) { logger.trace("Starting XHR receive request for " + url); } ClientCallback<ClientConnection> clientCallback = new ClientCallback<ClientConnection>() { @Override public void completed(ClientConnection connection) { ClientRequest request = new ClientRequest().setMethod(Methods.POST).setPath(url.getPath()); HttpString headerName = HttpString.tryFromString(HttpHeaders.HOST); request.getRequestHeaders().add(headerName, url.getHost()); addHttpHeaders(request, headers); HttpHeaders httpHeaders = transportRequest.getHttpRequestHeaders(); connection.sendRequest(request, createReceiveCallback(transportRequest, url, httpHeaders, session, connectFuture)); } @Override public void failed(IOException ex) { throw new SockJsTransportFailureException("Failed to execute request to " + url, ex); } }; this.httpClient.connect(clientCallback, url, this.worker, this.bufferPool, this.optionMap); }
@Override public void completed(ClientConnection connection) { ClientRequest request = new ClientRequest().setMethod(Methods.POST).setPath(url.getPath()); HttpString headerName = HttpString.tryFromString(HttpHeaders.HOST); request.getRequestHeaders().add(headerName, url.getHost()); addHttpHeaders(request, headers); HttpHeaders httpHeaders = transportRequest.getHttpRequestHeaders(); connection.sendRequest(request, createReceiveCallback(transportRequest, url, httpHeaders, session, connectFuture)); }
this.httpClient.connect(url, this.worker, this.bufferPool, this.optionMap).get(); try { ClientRequest request = new ClientRequest().setMethod(method).setPath(url.getPath()); request.getRequestHeaders().add(HttpString.tryFromString(HttpHeaders.HOST), url.getHost()); if (StringUtils.hasLength(body)) {
private Object processInvocation(Name name, HttpString method, String pathSegment, Name newName) throws NamingException { ProviderEnvironment environment = httpNamingProvider.getProviderEnvironment(); final RetryContext context = canRetry(environment) ? new RetryContext() : null; return performWithRetry((contextOrNull, name1, param) -> { try { HttpNamingProvider.HttpPeerIdentity peerIdentity = (HttpNamingProvider.HttpPeerIdentity) httpNamingProvider.getPeerIdentityForNamingUsingRetry(contextOrNull); StringBuilder sb = new StringBuilder(); String uriPath = peerIdentity.getUri().getPath(); sb.append(uriPath); if (!uriPath.endsWith("/")) { sb.append("/"); } sb.append(pathSegment) .append(URLEncoder.encode(name.toString(), StandardCharsets.UTF_8.name())); if (newName != null) { sb.append("?new="); sb.append(URLEncoder.encode(newName.toString(), StandardCharsets.UTF_8.name())); } final ClientRequest clientRequest = new ClientRequest() .setPath(sb.toString()) .setMethod(method); clientRequest.getRequestHeaders().put(Headers.ACCEPT, ACCEPT_VALUE); return performOperation(name1, peerIdentity.getUri(), clientRequest); } catch (UnsupportedEncodingException e) { NamingException namingException = new NamingException(e.getMessage()); namingException.initCause(e); throw namingException; } }, environment, context, name, null); }
private void acquireSessionAffinity(CountDownLatch latch, AuthenticationConfiguration authenticationConfiguration) { ClientRequest clientRequest = new ClientRequest(); clientRequest.setMethod(Methods.GET); clientRequest.setPath(uri.getPath() + "/common/v1/affinity"); AuthenticationContext context = AuthenticationContext.captureCurrent(); SSLContext sslContext; try { sslContext = AUTH_CONTEXT_CLIENT.getSSLContext(uri, context); } catch (GeneralSecurityException e) { latch.countDown(); HttpClientMessages.MESSAGES.failedToAcquireSession(e); return; } sendRequest(clientRequest, sslContext, authenticationConfiguration, null, null, (e) -> { latch.countDown(); HttpClientMessages.MESSAGES.failedToAcquireSession(e); }, null, latch::countDown); }
private void processInvocation(Name name, HttpString method, Object object, String pathSegment) throws NamingException { ProviderEnvironment environment = httpNamingProvider.getProviderEnvironment(); final RetryContext context = canRetry(environment) ? new RetryContext() : null; performWithRetry((contextOrNull, name1, param) -> { HttpNamingProvider.HttpPeerIdentity peerIdentity = (HttpNamingProvider.HttpPeerIdentity) httpNamingProvider.getPeerIdentityForNamingUsingRetry(contextOrNull); try { StringBuilder sb = new StringBuilder(); String uriPath = peerIdentity.getUri().getPath(); sb.append(uriPath); if (!uriPath.endsWith("/")) { sb.append("/"); } sb.append(pathSegment).append(URLEncoder.encode(name.toString(), StandardCharsets.UTF_8.name())); final ClientRequest clientRequest = new ClientRequest() .setPath(sb.toString()) .setMethod(method); clientRequest.getRequestHeaders().put(Headers.ACCEPT, ACCEPT_VALUE); if (object != null) { clientRequest.getRequestHeaders().put(Headers.CONTENT_TYPE, VALUE_TYPE.toString()); } performOperation(peerIdentity.getUri(), object, clientRequest); return null; } catch (UnsupportedEncodingException e) { NamingException namingException = new NamingException(e.getMessage()); namingException.initCause(e); throw namingException; } }, environment, context, name, object); }
@Override public void checkFail(String serviceId, String token) { if(logger.isDebugEnabled()) logger.debug("checkFail serviceId = " + serviceId); String path = "/v1/agent/check/fail/" + "service:" + serviceId; final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<ClientResponse> reference = new AtomicReference<>(); try { if(connection == null || !connection.isOpen() || reqCounter >= maxReqPerConn) { if(logger.isDebugEnabled()) logger.debug("connection is closed with counter " + reqCounter + ", reconnecting..."); connection = client.connect(uri, Http2Client.WORKER, Http2Client.SSL, Http2Client.BUFFER_POOL, optionMap).get(); reqCounter = 0; } ClientRequest request = new ClientRequest().setMethod(Methods.PUT).setPath(path); request.getRequestHeaders().put(Headers.HOST, "localhost"); if(token != null) request.getRequestHeaders().put(HttpStringConstants.CONSUL_TOKEN, token); connection.sendRequest(request, client.createClientCallback(reference, latch)); latch.await(); reqCounter++; int statusCode = reference.get().getResponseCode(); if(statusCode >= 300){ logger.error("Failed to checkPass on Consul: " + statusCode + ":" + reference.get().getAttachment(Http2Client.RESPONSE_BODY)); throw new Exception("Failed to checkPass on Consul: " + statusCode + ":" + reference.get().getAttachment(Http2Client.RESPONSE_BODY)); } } catch (Exception e) { logger.error("CheckPass request exception", e); } }
@Override public void checkPass(String serviceId, String token) { if(logger.isDebugEnabled()) logger.debug("checkPass serviceId = " + serviceId); String path = "/v1/agent/check/pass/" + "service:" + serviceId; final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<ClientResponse> reference = new AtomicReference<>(); try { if(connection == null || !connection.isOpen() || reqCounter >= maxReqPerConn) { if(logger.isDebugEnabled()) logger.debug("connection is closed with counter " + reqCounter + ", reconnecting..."); connection = client.connect(uri, Http2Client.WORKER, Http2Client.SSL, Http2Client.BUFFER_POOL, optionMap).get(); reqCounter = 0; } ClientRequest request = new ClientRequest().setMethod(Methods.PUT).setPath(path); request.getRequestHeaders().put(Headers.HOST, "localhost"); if(token != null) request.getRequestHeaders().put(HttpStringConstants.CONSUL_TOKEN, token); connection.sendRequest(request, client.createClientCallback(reference, latch)); latch.await(); reqCounter++; int statusCode = reference.get().getResponseCode(); if(statusCode >= 300){ logger.error("Failed to checkPass on Consul: " + statusCode + ":" + reference.get().getAttachment(Http2Client.RESPONSE_BODY)); throw new Exception("Failed to checkPass on Consul: " + statusCode + ":" + reference.get().getAttachment(Http2Client.RESPONSE_BODY)); } } catch (Exception e) { logger.error("CheckPass request exception", e); } }
@Override public void unregisterService(String serviceId, String token) { String path = "/v1/agent/service/deregister/" + serviceId; final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<ClientResponse> reference = new AtomicReference<>(); try { if(connection == null || !connection.isOpen() || reqCounter >= maxReqPerConn) { if(logger.isDebugEnabled()) logger.debug("connection is closed with counter " + reqCounter + ", reconnecting..."); connection = client.connect(uri, Http2Client.WORKER, Http2Client.SSL, Http2Client.BUFFER_POOL, optionMap).get(); reqCounter = 0; } ClientRequest request = new ClientRequest().setMethod(Methods.PUT).setPath(path); request.getRequestHeaders().put(Headers.HOST, "localhost"); if(token != null) request.getRequestHeaders().put(HttpStringConstants.CONSUL_TOKEN, token); connection.sendRequest(request, client.createClientCallback(reference, latch)); latch.await(); reqCounter++; int statusCode = reference.get().getResponseCode(); if(statusCode >= 300){ System.out.println("body = " + reference.get().getAttachment(Http2Client.RESPONSE_BODY)); throw new Exception("Failed to unregister on Consul: " + statusCode); } } catch (Exception e) { logger.error("Exception:", e); } }
@Override public void registerService(ConsulService service, String token) { String json = service.toString(); String path = "/v1/agent/service/register"; final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<ClientResponse> reference = new AtomicReference<>(); try { if(connection == null || !connection.isOpen() || reqCounter >= maxReqPerConn) { if(logger.isDebugEnabled()) logger.debug("connection is closed with counter " + reqCounter + ", reconnecting..."); connection = client.connect(uri, Http2Client.WORKER, Http2Client.SSL, Http2Client.BUFFER_POOL, optionMap).get(); reqCounter = 0; } ClientRequest request = new ClientRequest().setMethod(Methods.PUT).setPath(path); if(token != null) request.getRequestHeaders().put(HttpStringConstants.CONSUL_TOKEN, token); request.getRequestHeaders().put(Headers.HOST, "localhost"); request.getRequestHeaders().put(Headers.TRANSFER_ENCODING, "chunked"); connection.sendRequest(request, client.createClientCallback(reference, latch, json)); latch.await(); reqCounter++; int statusCode = reference.get().getResponseCode(); if(statusCode >= 300){ throw new Exception("Failed to register on Consul: " + statusCode); } } catch (Exception e) { logger.error("Exception:", e); } }
final ClientRequest request = new ClientRequest(); request.setMethod(Methods.OPTIONS); request.setPath("*");
@Override public void run() { final ClientRequest request = new ClientRequest().setMethod(Methods.POST).setPath(path); request.getRequestHeaders().put(Headers.TRANSFER_ENCODING, "chunked"); request.getRequestHeaders().put(Headers.HOST, "localhost"); connection.sendRequest(request, client.createClientCallback(reference, latch, body)); } });
private <T> T processOperation(String operationPath, Function<ClientResponse, T> resultFunction) throws XAException { final CompletableFuture<T> result = new CompletableFuture<>(); ClientRequest cr = new ClientRequest() .setMethod(Methods.POST) .setPath(targetContext.getUri().getPath() + operationPath);
public static String derefToken(DerefRequest derefRequest) throws ClientException { final Http2Client client = Http2Client.getInstance(); final CountDownLatch latch = new CountDownLatch(1); final ClientConnection connection; try { connection = client.connect(new URI(derefRequest.getServerUrl()), Http2Client.WORKER, Http2Client.SSL, Http2Client.BUFFER_POOL, derefRequest.enableHttp2 ? OptionMap.create(UndertowOptions.ENABLE_HTTP2, true): OptionMap.EMPTY).get(); } catch (Exception e) { throw new ClientException(e); } final AtomicReference<ClientResponse> reference = new AtomicReference<>(); try { ClientRequest request = new ClientRequest().setPath(derefRequest.getUri()).setMethod(Methods.GET); request.getRequestHeaders().put(Headers.AUTHORIZATION, getBasicAuthHeader(derefRequest.getClientId(), derefRequest.getClientSecret())); request.getRequestHeaders().put(Headers.HOST, "localhost"); connection.sendRequest(request, client.createClientCallback(reference, latch)); latch.await(); } catch (Exception e) { logger.error("Exception: ", e); throw new ClientException(e); } finally { IoUtils.safeClose(connection); } return reference.get().getAttachment(Http2Client.RESPONSE_BODY); }
final CompletableFuture<Xid[]> xidList = new CompletableFuture<>(); ClientRequest cr = new ClientRequest() .setPath(targetContext.getUri().getPath() + TransactionConstants.TXN_V1_XA_RECOVER + "/" + parentName) .setMethod(Methods.GET);
final ClientRequest request = new ClientRequest(); request.setMethod(Methods.OPTIONS); request.setPath("*");
final CompletableFuture<Xid> beginXid = new CompletableFuture<>(); ClientRequest cr = new ClientRequest() .setPath(targetContext.getUri().getPath() + TransactionConstants.TXN_V1_UT_BEGIN) .setMethod(Methods.POST);
public static String getKey(KeyRequest keyRequest) throws ClientException { final Http2Client client = Http2Client.getInstance(); final CountDownLatch latch = new CountDownLatch(1); final ClientConnection connection; try { connection = client.connect(new URI(keyRequest.getServerUrl()), Http2Client.WORKER, Http2Client.SSL, Http2Client.BUFFER_POOL, keyRequest.enableHttp2 ? OptionMap.create(UndertowOptions.ENABLE_HTTP2, true): OptionMap.EMPTY).get(); } catch (Exception e) { throw new ClientException(e); } final AtomicReference<ClientResponse> reference = new AtomicReference<>(); try { ClientRequest request = new ClientRequest().setPath(keyRequest.getUri()).setMethod(Methods.GET); if (keyRequest.getClientId()!=null) { request.getRequestHeaders().put(Headers.AUTHORIZATION, getBasicAuthHeader(keyRequest.getClientId(), keyRequest.getClientSecret())); } request.getRequestHeaders().put(Headers.HOST, "localhost"); connection.sendRequest(request, client.createClientCallback(reference, latch)); latch.await(); } catch (Exception e) { logger.error("Exception: ", e); throw new ClientException(e); } finally { IoUtils.safeClose(connection); } return reference.get().getAttachment(Http2Client.RESPONSE_BODY); }
@Override public void run() { final ClientRequest request = new ClientRequest().setMethod(Methods.POST).setPath(tokenRequest.getUri()); request.getRequestHeaders().put(Headers.HOST, "localhost"); request.getRequestHeaders().put(Headers.TRANSFER_ENCODING, "chunked");
public ClientRequest createRequest(String mountPoint) { ClientRequest clientRequest = new ClientRequest(); if (invocationType == InvocationType.METHOD_INVOCATION) { clientRequest.setMethod(Methods.POST); clientRequest.getRequestHeaders().add(Headers.ACCEPT, INVOCATION_ACCEPT); if (invocationId != null) { clientRequest.getRequestHeaders().put(EjbHeaders.INVOCATION_ID, invocationId); } clientRequest.setPath(buildPath(mountPoint, "invoke", appName, moduleName, distinctName, beanName, beanId, view, method)); clientRequest.getRequestHeaders().put(Headers.CONTENT_TYPE, EjbHeaders.INVOCATION_VERSION_ONE); } else if (invocationType == InvocationType.STATEFUL_CREATE) { clientRequest.setMethod(Methods.POST); clientRequest.getRequestHeaders().put(Headers.CONTENT_TYPE, EjbHeaders.SESSION_OPEN_VERSION_ONE); clientRequest.setPath(buildPath(mountPoint,"open", appName, moduleName, distinctName, beanName)); clientRequest.getRequestHeaders().add(Headers.ACCEPT, STATEFUL_CREATE_ACCEPT); } else if(invocationType == InvocationType.CANCEL) { clientRequest.setMethod(Methods.DELETE); clientRequest.setPath(buildPath(mountPoint,"cancel", appName, moduleName, distinctName, beanName, invocationId, cancelIfRunning)); } return clientRequest; }