如何在Vaadin 12中创建Web服务?

Jon*_*ter 1 vaadin

我正在考虑将Vaadin 12用于我的前端开发(我们主要是纯Java工程师,我想在大多数情况下将代码保存在Java中).但是,我们可能还需要支持Web服务.如果我们不使用Vaadin,我们只使用Jersey&DropWizard,创建Web服务很简单.

但是在Vaadin 12中,我可以用最少的额外代码/黑客创建web服务吗?(我在Vaadin 8中看到了如何这样做的例子,但是Vaadin 10和12与我读到的实质上有所不同.)特别是,有人可以指出我在Vaadin 12中如何做到的任何示例代码/示例?

(在相关的说明:这是一个"坏"的想法,我应该为我的一个或两个web服务实现一个单独的系统(在DropWizard中使用Jersey)?...我宁愿不必支持一个全新的服务器/ instance等只是为了一些web服务,当我99%的逻辑可能都在Vaadin系统中时.)

mst*_*ahv 5

从这个意义上讲,Vaadin 8和Vaadin 10+完全相同.如果您希望公开例如REST服务,除了Vaadin UI之外,只需将REST API公开给其他URL即可.如果root("/")映射到Vaadin,例如从"/ api"服务它们.您可以使用两个单独的Web应用程序(war文件)或将Vaadin UI和API映射到不同的地址.

下面是一个非常简单的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";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)