Как можно создать веб-сервисы в Vaadin 12? - PullRequest
0 голосов
/ 02 января 2019

Я подумываю использовать Vaadin 12 для своей фронт-энда (в основном мы инженеры на чистом Java, и я бы хотел сохранить код на Java по большей части).Однако нам может потребоваться также поддержка веб-сервисов.Если бы мы не использовали Vaadin, мы бы просто использовали Jersey & DropWizard, и создание веб-сервисов не вызывает затруднений.

Но в Vaadin 12 я могу создавать веб-сервисы с минимальным дополнительным кодом / хаки?(Я видел примеры того, как это сделать в Vaadin 8, но Vaadin 10 и 12 существенно отличается от того, что я читал.) В частности, любой пример кода / пример, который кто-то может указать мне, как это сделать в Vaadin 12?

(На заметку о том, что это «плохая» идея, и мне нужно просто внедрить отдельную систему (используя Джерси в DropWizard) для одного или двух веб-сервисов? ... Я бы предпочел не иметьподдерживать совершенно новый сервер / экземпляр и т. д. только для пары веб-сервисов, когда 99% моей логики предположительно будет в системе Vaadin.)

Ответы [ 2 ]

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

@ mstahv Я наконец получил его на работу.Моя ошибка не заключалась в использовании правильных библиотек трикотажа.В итоге у меня работали следующие библиотеки:

  <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-server</artifactId>
            <version>2.27</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet</artifactId>
            <version>2.27</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.inject/jersey-hk2 -->
        <dependency>
            <groupId>org.glassfish.jersey.inject</groupId>
            <artifactId>jersey-hk2</artifactId>
            <version>2.27</version>
        </dependency>

Спасибо!

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

В этом смысле Vaadin 8 и Vaadin 10+ абсолютно одинаковы.Если вы хотите, например, предоставить службу REST, в дополнение к вашему пользовательскому интерфейсу Vaadin, просто предоставьте API REST другой URL-адрес.Например, служите им из "/ api", если root ("/") сопоставлен с Vaadin.Вы можете сделать это либо с двумя отдельными веб-приложениями (файлы war), либо сопоставив пользовательский интерфейс и API Vaadin только с разными адресами.

Ниже приведено очень простое приложение JAX-RS, которое прекрасно развертывается рядом с приложением Vaadin (такжедля Vaadin 10+, протестировано с использованием Wildfly):

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Application;

@ApplicationPath("/api")
public class RestStuff extends Application {

    @Path("/")
    public static class HelloWorld {
        @GET
        @Produces("text/plain")
        public String getMessage() {
            return "Hello World";
        }
    }
}
...