javax.ws.rs.ProcessingException: RESTEASY004655: невозможно вызвать запрос в Jersy 2.0 (удаленная машина) - PullRequest
0 голосов
/ 26 мая 2020

Я написал следующий код и запустил его. Он работал, как ожидалось:

  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?

...