Ваадин 10/11 и встроенный причал - PullRequest
0 голосов
/ 20 сентября 2018

Я разработал приложение среднего размера на Vaadin 8.5.1.Jetty внедренный 9.4.8 использовался как контейнер сервлета для сервлета Vaadin.В коде Java я инициализирую экземпляр Jetty, создаю сервлет Vaadin и присоединяю его к Jetty.В Maven я использую 'vaadin-maven-plugin', который помогает мне сделать правильные настройки для папок, также упаковка - 'jar'.Spring (не Spring Boot) используется для настройки приложений и IoC.

Теперь я хочу перенести проект в Vaadin 10/11.Я перепробовал все Vaadin Starter Packs, который генерирует выходной JAR.Но я не понимал, как я могу изменить эти пакеты, чтобы удалить Spring Boot и получить простой проект Maven со встроенной Jetty.

Уже задаваемый вопрос на форуме Vaadin: Vaadin 10 + Jetty врезано

1 Ответ

0 голосов
/ 24 января 2019

Вы должны настроить Jetty Server следующим образом:

public class Application {

    public static void main(String... args) throws Exception {
        new Application().run(8080, "/");
    }

    public void run(int port, String contextPath) throws Exception {
        URL webRootLocation = this.getClass().getResource("/META-INF/resources/");
        URI webRootUri = webRootLocation.toURI();

        WebAppContext context = new WebAppContext();
        context.setBaseResource(Resource.newResource(webRootUri));
        context.setContextPath(contextPath);
        context.setAttribute("org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern", ".*");
        context.setConfigurationDiscovered(true);
        context.setConfigurations(new Configuration[]{
                new AnnotationConfiguration(),
                new WebInfConfiguration(),
                new WebXmlConfiguration(),
                new MetaInfConfiguration(),
                new FragmentConfiguration(),
                new EnvConfiguration(),
                new PlusConfiguration(),
                new JettyWebXmlConfiguration()
        });
        context.getServletContext().setExtendedListenerTypes(true);
        context.addEventListener(new ServletContextListeners());

        Server server = new Server(port);
        server.setHandler(context);

        server.start();
        server.join();
    }

}

Кроме того, вам нужно использовать maven-shade-plugin, если вы хотите упаковать артефакт в качестве uber-jar.

Вы можете найти пример для Vaadin 12+ на https://github.com/alejandro-du/embedded-jetty-demo

...