Как перейти со встроенного tomcat 8.0.xx на встроенный tomcat 9.0.xx - PullRequest
0 голосов
/ 11 июля 2019

У меня есть встроенное приложение Tomcat 8.0.xx с настроенными NioEndpoint, Http11NioProtocol, TomcatConnector, SSLContext, Request.Я пытаюсь перейти на встроенный Tomcat 9.0.xx Но настройки очень глубокие и не позволяют мне мигрировать.

Я пытался адаптировать свои классы настройки для работы с новым tomcat.Но я не могу понять, что произошло: в консоли Linux я вижу - порты открыты: 80/443, но когда я делаю простой запрос GET (порт 80) - ответ сервера 404

Это выглядит такненастроенные коннекторы или сервлеты не развернуты.

HTTP connector configuration: 
...
Connector connector = new MyTomcatConnector(MyHttp11NioProtocol.class.getName());
            connector.setProperty("address", "xxx.xxx.xxx.xxx");
            connector.setPort(80);
            connector.setRedirectPort(443);
            ... set addition connector properties(connector);
...

public class MyConnector extends org.apache.catalina.connector.Connector {
...
     public MyTomcatConnector(String protocol) throws Exception {
            super(protocol);
            + my own logger;
     }
     ...
     public MyRequest createRequest() {
             my logger
             MyRequest request = new MyRequest(this);
             return (request); 
     }
}

public class MyRequest extends org.apache.catalina.connector.Request {
     ...
     public MyRequest(Connector connector) {
      super(connector);
      + my own logger;
   }
   @Override
   public Locale getLocale() {
      + my own logger;
      Locale locale = super.getLocale();
      ....
      return locale;
   }
}

public class MyHttp11NioProtocol extends AbstractHttp11JsseProtocol<NioChannel> {
   ...
   public MyHttp11NioProtocol(){
        super(new MyNioEndpoint(HttpInterface.SERVICE));
        + my own logger;
    }
   ...
   Copy/paste method from Http11NioProtocol
}

public class MyNioEndpoint extends NioEndpoint implements TLSContextObserver {
    protected MySSLContext context;
    protected SSLEngine engine;
    ...
      public MyNioEndpoint(String sslContextName) {
      super();
      ...
      try {
         context = //get instance of my own SSLContext by name (sslContextName);
         + logger

      }catch(...)...      
    }

   @Override
   protected SSLEngine createSSLEngine(String sniHostName, List<Cipher> clientRequestedCiphers, List<String> clientRequestedApplicationProtocols) {
      engine = context.getSSLEngine();
      context.addObserver(this);
      return engine;
   }

}

public class MySSLContext extends AbstractObservable<TLSContextObserver, TLSInterfaceConfig>  implements org.apache.tomcat.util.net.SSLContext {
    //configuing standart SSLContext (keyManager[], TrusteManager[] ... etc...
}

Я ожидаю увидеть нормальный ответ от сервера через порт 80, но я вижу 404.

Не могли бы вы дать мне совет о том, где«копать»?

...