use of org.jboss.resteasy.client.jaxrs.ResteasyClient in project dubbo by alibaba.
the class RestProtocol method doRefer.
@Override
protected <T> T doRefer(Class<T> serviceType, URL url) throws RpcException {
// TODO more configs to add
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
// 20 is the default maxTotal of current PoolingClientConnectionManager
connectionManager.setMaxTotal(url.getParameter(CONNECTIONS_KEY, HTTPCLIENTCONNECTIONMANAGER_MAXTOTAL));
connectionManager.setDefaultMaxPerRoute(url.getParameter(CONNECTIONS_KEY, HTTPCLIENTCONNECTIONMANAGER_MAXPERROUTE));
if (connectionMonitor == null) {
connectionMonitor = new ConnectionMonitor();
connectionMonitor.start();
}
connectionMonitor.addConnectionManager(connectionManager);
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(url.getParameter(CONNECT_TIMEOUT_KEY, DEFAULT_CONNECT_TIMEOUT)).setSocketTimeout(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT)).build();
SocketConfig socketConfig = SocketConfig.custom().setSoKeepAlive(true).setTcpNoDelay(true).build();
CloseableHttpClient httpClient = HttpClientBuilder.create().setConnectionManager(connectionManager).setKeepAliveStrategy((response, context) -> {
HeaderElementIterator it = new BasicHeaderElementIterator(response.headerIterator(HTTP.CONN_KEEP_ALIVE));
while (it.hasNext()) {
HeaderElement he = it.nextElement();
String param = he.getName();
String value = he.getValue();
if (value != null && param.equalsIgnoreCase(TIMEOUT_KEY)) {
return Long.parseLong(value) * 1000;
}
}
return HTTPCLIENT_KEEPALIVEDURATION;
}).setDefaultRequestConfig(requestConfig).setDefaultSocketConfig(socketConfig).build();
ApacheHttpClient4Engine engine = new ApacheHttpClient4Engine(httpClient);
ResteasyClient client = new ResteasyClientBuilder().httpEngine(engine).build();
clients.add(client);
client.register(RpcContextFilter.class);
for (String clazz : COMMA_SPLIT_PATTERN.split(url.getParameter(EXTENSION_KEY, ""))) {
if (!StringUtils.isEmpty(clazz)) {
try {
client.register(Thread.currentThread().getContextClassLoader().loadClass(clazz.trim()));
} catch (ClassNotFoundException e) {
throw new RpcException("Error loading JAX-RS extension class: " + clazz.trim(), e);
}
}
}
// TODO protocol
ResteasyWebTarget target = client.target("http://" + url.getHost() + ":" + url.getPort() + "/" + getContextPath(url));
return target.proxy(serviceType);
}
use of org.jboss.resteasy.client.jaxrs.ResteasyClient in project oxTrust by GluuFederation.
the class RecaptchaUtil method verifyGoogleRecaptcha.
public boolean verifyGoogleRecaptcha(String gRecaptchaResponse, String secretKey) {
boolean result = false;
try {
String uriTemplate = "https://www.google.com/recaptcha/api/siteverify";
ResteasyClient resteasyClient;
if (ProxyUtil.isProxyRequied()) {
URLConnectionEngine engine = new URLConnectionEngine();
resteasyClient = ((ResteasyClientBuilder) ResteasyClientBuilder.newBuilder()).httpEngine(engine).build();
} else {
resteasyClient = (ResteasyClient) ResteasyClientBuilder.newClient();
}
WebTarget webTarget = resteasyClient.target(uriTemplate);
Builder clientRequest = webTarget.request();
clientRequest.accept("application/json");
Form requestForm = new Form();
requestForm.param("secret", secretKey);
requestForm.param("response", gRecaptchaResponse);
Response response = clientRequest.buildPost(Entity.form(requestForm)).invoke();
try {
ObjectMapper mapper = new ObjectMapper();
Map<String, String> map = mapper.readValue(new ByteArrayInputStream(response.readEntity(String.class).getBytes()), new TypeReference<Map<String, String>>() {
});
return Boolean.parseBoolean(map.get("success"));
} finally {
response.close();
if (resteasyClient.httpEngine() != null) {
resteasyClient.httpEngine().close();
}
}
} catch (Exception e) {
log.warn("Exception happened while verifying recaptcha, check your internet connection", e);
return result;
}
}
use of org.jboss.resteasy.client.jaxrs.ResteasyClient in project scheduling by ow2-proactive.
the class SchedulerRestClient method submit.
private JobIdData submit(String sessionId, InputStream job, MediaType mediaType, Map<String, String> variables, Map<String, String> genericInfos) throws NotConnectedRestException {
String uriTmpl = restEndpointURL + addSlashIfMissing(restEndpointURL) + "scheduler/submit";
ResteasyClient client = buildResteasyClient(providerFactory);
ResteasyWebTarget target = client.target(uriTmpl);
// Generic infos
if (genericInfos != null) {
for (String key : genericInfos.keySet()) {
target = target.queryParamNoTemplate(key, genericInfos.get(key));
}
}
// Multipart form
MultipartFormDataOutput formData = new MultipartFormDataOutput();
// Add job to multipart
formData.addFormData(FILE_KEY, job, mediaType);
// Add variables to multipart
if (variables != null && variables.size() > 0) {
formData.addFormData(VARIABLES_KEY, variables, MediaType.APPLICATION_JSON_TYPE);
}
// Multipart form entity
GenericEntity<MultipartFormDataOutput> entity = new GenericEntity<MultipartFormDataOutput>(formData) {
};
Response response = target.request().header("sessionid", sessionId).post(Entity.entity(entity, MediaType.MULTIPART_FORM_DATA_TYPE));
if (response.getStatus() != HttpURLConnection.HTTP_OK) {
if (response.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) {
throw new NotConnectedRestException("User not authenticated or session timeout.");
} else {
throwException(String.format("Job submission failed status code: %d", response.getStatus()), response);
}
}
return response.readEntity(JobIdData.class);
}
use of org.jboss.resteasy.client.jaxrs.ResteasyClient in project scheduling by ow2-proactive.
the class SchedulerRestClient method upload.
public boolean upload(String sessionId, StreamingOutput output, String encoding, String dataspace, String path) throws Exception {
StringBuffer uriTmpl = (new StringBuffer()).append(restEndpointURL).append(addSlashIfMissing(restEndpointURL)).append("data/").append(dataspace);
ResteasyClient client = buildResteasyClient(providerFactory);
ResteasyWebTarget target = client.target(uriTmpl.toString()).path(path);
Response response = null;
try {
response = target.request().header("sessionid", sessionId).put(Entity.entity(output, new Variant(MediaType.APPLICATION_OCTET_STREAM_TYPE, (Locale) null, encoding)));
if (response.getStatus() != HttpURLConnection.HTTP_CREATED) {
if (response.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) {
throw new NotConnectedRestException("User not authenticated or session timeout.");
} else {
throwException(String.format("File upload failed. Status code: %d" + response.getStatus()), response);
}
}
return true;
} finally {
if (response != null) {
response.close();
}
}
}
use of org.jboss.resteasy.client.jaxrs.ResteasyClient in project scheduling by ow2-proactive.
the class SchedulerRestClient method pushFile.
public boolean pushFile(String sessionId, String space, String path, String fileName, InputStream fileContent) throws Exception {
String uriTmpl = (new StringBuilder(restEndpointURL)).append(addSlashIfMissing(restEndpointURL)).append("scheduler/dataspace/").append(space).append(URLEncoder.encode(path, "UTF-8")).toString();
ResteasyClient client = buildResteasyClient(providerFactory);
ResteasyWebTarget target = client.target(uriTmpl);
MultipartFormDataOutput formData = new MultipartFormDataOutput();
formData.addFormData("fileName", fileName, MediaType.TEXT_PLAIN_TYPE);
formData.addFormData("fileContent", fileContent, MediaType.APPLICATION_OCTET_STREAM_TYPE);
GenericEntity<MultipartFormDataOutput> entity = new GenericEntity<MultipartFormDataOutput>(formData) {
};
Response response = target.request().header("sessionid", sessionId).post(Entity.entity(entity, MediaType.MULTIPART_FORM_DATA_TYPE));
if (response.getStatus() != HttpURLConnection.HTTP_OK) {
if (response.getStatus() == HttpURLConnection.HTTP_UNAUTHORIZED) {
throw new NotConnectedRestException("User not authenticated or session timeout.");
} else {
throwException(String.format("File upload failed. Status code: %d", response.getStatus()), response);
}
}
return response.readEntity(Boolean.class);
}
Aggregations