Я написал следующий код и запустил его. Он работал, как ожидалось:
package com.amazon.kindle.test.sample.unit;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.Configuration;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.KeyManager;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import javax.ws.rs.core.Response;
public class DevTestingCode{
public static String getMethodSecuredResponse(String httpsEndpoint)throws Exception
{
Response response1=null;
Client client=null;
try {
// configure the SSLContext with a TrustManager
SSLContext ctx = getContextAndIgnoreServerCerts();
client = ClientBuilder.newBuilder().sslContext(ctx).hostnameVerifier(getHostnameVerifierAndIgnoreVerification()).build();
response1 = client.target(httpsEndpoint).request().header("Authorization", "Basic YXPBpX2Ri8827289EsD2dsTEHJhY2U5NDQxMg==").header("Accept", "application/json").get();
String result =response1.readEntity(String.class);
response1.close();
client.close();
return result;
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
response1.close();
client.close();
}
return null;
}
public static SSLContext getContextAndIgnoreServerCerts() {
SSLContext sslcontext = null;
try {
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkServerTrusted(X509Certificate[] arg0,
String arg1) throws CertificateException {
}
@Override
public void checkClientTrusted(X509Certificate[] arg0,
String arg1) throws CertificateException {
}
} };
sslcontext = SSLContext.getInstance("TLS");
sslcontext.init(null, trustAllCerts, null);
} catch (Exception e) {
}
return sslcontext;
}
public static HostnameVerifier getHostnameVerifierAndIgnoreVerification() {
return new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
}
}
Когда я запускаю приведенный выше код на моей локальной машине (localhost) eclipse IDE. Он выполнен нормально и вернул ожидаемый ответ. Но когда я упаковываю тот же код, что и автономная банка, и запускаю его в поле Linux (удаленная машина), я заметил ниже сообщение об ошибке.
javax.ws.rs.ProcessingException: RESTEASY004655: Unable to invoke request
at org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.invoke(ApacheHttpClient4Engine.java:316)
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:462)
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocationBuilder.get(ClientInvocationBuilder.java:157)
at com.amazon.kindle.test.sample.unit.getMethodSecuredResponse(SSLValidator.java:42)
at com.amazon.kindle.samples.dao.IRestInvokerImpl.getService(IRestInvokerImpl.java:51)
at com.amazon.kindle.samples.dao.IRestInvokerImpl$$FastClassBySpringCGLIB$$8fa2ea48.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:671)
at com.amazon.kindle.samples.dao.IRestInvokerImpl$$EnhancerBySpringCGLIB$$829c030a.getService(<generated>)
at com.amazon.kindle.samples.impl.SampleResourceImpl.getJiraIncidentCount(SampleResourceImpl.java:155)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:140)
at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:294)
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:248)
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:235)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:402)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:209)
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:227)
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.amazon.kindle.web.filters.HelixUriCompatibilityFilter.doFilter(HelixUriCompatibilityFilter.java:25)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.amazon.platform.service.rest.CoreContextFilter.doFilter(CoreContextFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.amazon.kindle.web.filters.SSLApplicationFilter.doFilter(SSLApplicationFilter.java:58)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChai
Может кто-нибудь, пожалуйста, помогите мне понять, что я пропустил в приведенном выше коде . Почему он отлично работает на локальном хосте, а не в Linux / Remote?