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

时间:2019-01-02 18:12:11

标签: vaadin

我正在考虑将Vaadin 12用于前端开发(我们主要是纯Java工程师,并且我希望将代码大部分保留在Java中)。但是,我们可能还需要支持Web服务。如果我们不使用Vaadin,我们将只使用Jersey&DropWizard,创建Web服务非常简单。

但是在Vaadin 12 中,我可以使用最少的附加代码/黑客来创建Web服务吗? (我在Vaadin 8中看到了如何执行此操作的示例,但Vaadin 10和12与我阅读的内容有本质上的区别。)特别是,有人可以指出我在Vaadin 12中如何执行此操作的示例代码/示例吗?

(在相关说明中:这是一个“坏”主意,我应该为我的一个或两个Web服务实现一个单独的系统(使用DropWizard中的Jersey)吗?...我宁愿不必支持一个整个新服务器/实例等仅用于几个Web服务,而我的逻辑中的99%可能在Vaadin系统中。)

2 个答案:

答案 0 :(得分:5)

从这个意义上说,Vaadin 8和Vaadin 10+完全相同。如果您想公开例如REST服务,除了Vaadin UI外,只需将REST API公开到另一个URL。例如。如果根(“ /”)映射到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";
        }
    }
}

答案 1 :(得分:0)

@mstahv我终于得到它了。我的错误是没有使用正确的球衣库。最后,以下库对我有用:

let hashsum = require("gulp-hashsum");
function getHash() {
    gulp.src(["www/main*.js"]).pipe(hashsum({
            stream: true,
            json: true
        }
    )).pipe(gulp.dest( 
      // How to replace ngsw.json 'hashTable' entry with this response? )); 
    }

谢谢!