允许在vert.x中创建JAX-RS Jersey资源。

 

入门

将vertx-jersey依赖项添加到您的项目中

<dependency>
<groupId>com.englishtown.vertx</groupId>
<artifactId>vertx-jersey</artifactId>
<version>4.7.0</version>
</dependency>

有关入门,请参见maven-simplest。还有其他示例模块,涵盖:注入,过滤器,序列化,摇动等。

有多种方法启动Jersey服务器:

1.运行vertx-jersey即服务

作为服务运行可能是最简单的入门方法。

在命令行中:

vertx run service:com.englishtown.vertx:vertx-jersey:4.7.0 -conf config.json

以编程方式:

vertx.deployVerticle("service:com.englishtown.vertx:vertx-jersey:4.7.0", config);

请参阅maven-service示例。

注意:作为服务运行时,vertx-hk2必须位于类路径上。

2.运行垂直

您可以从命令行运行JerseyVerticle,而不是作为服务运行:

vertx run java-hk2:com.englishtown.vertx.jersey.JerseyVerticle -conf config.json
vertx run java-guice:com.englishtown.vertx.jersey.JerseyVerticle -conf config.json

或以编程方式

vertx run java-hk2:com.englishtown.vertx.jersey.JerseyVerticle -conf config.json
vertx run java-guice:com.englishtown.vertx.jersey.JerseyVerticle -conf config.json

假设您在类路径上有vertx-hk2或vertx-guice以及vertx-jersey及其所有依赖项。

3.自己创建JerseyServer

您也可以跳过JerseyVerticle和实例化您JerseyServer自己。为此,最容易使用DI,但是也可以手动完成。

组态

vertx-jersey配置如下:

{
"host": "<host>",
"port": <port>,
"ssl": <ssl>,
"base_path": "<base_path>",
"packages": ["<packages>"],
"components": ["<components>"],
"instances": ["<instances>"],
"properties": {"<properties>"},
"compression_supported": <compression_supported>,
"jks_options": <jks_options>,
"receive_buffer_size": <receive_buffer_size>,
"max_body_size": <max_body_size>,
"backlog_size": <backlog_sze>
}
  • host-侦听连接的主机或IP地址。0.0.0.0表示监听所有可用地址。默认是0.0.0.0
  • port-用于侦听连接的端口。默认值为80
  • ssl-服务器应该https用作协议吗?默认值为false
  • base_path-基本路径球衣响应。默认值为/
  • packages-检查资源的一组软件包名称。也可以使用json字段resources
  • components-要注入的组件类名称的数组(功能等)。例如:"org.glassfish.jersey.jackson.JacksonFeature"。也可以使用json字段features
  • instances-一组要创建和注册的单例实例(HK2活页夹等)。也可以使用json字段binders
  • properties-在ResourceConfig上设置具有附加属性的对象。也可以使用json字段resource_config
  • compression_supported-布尔值,表示服务器是否支持压缩。默认值为false
  • jks_options-创建io.vertx.core.net.JksOptions的JSON对象。只有使用,如果ssltrue
  • receive_buffer_size-int接收缓冲区的大小。该值是可选的。
  • max_body_size-允许的最大int主体大小。默认值为1MB。
  • backlog_size-设置http服务器待办事项大小的整数。默认值为10,000

您必须配置至少一个软件包或组件。

您还可以在jerseyjson字段下将jersey配置分组:

{
"jersey": {
"host": "<host>",
"packages": "<packages>"
....
}
}

例子

简单
{
"resources": ["com.englishtown.vertx.jersey.resources"]
}
所有设定
{
"host": "localhost",
"port": 8080,
"base_path": "/rest",
"resources": ["com.englishtown.vertx.jersey.resources", "com.englishtown.vertx.jersey.resources2"],
"features": ["org.glassfish.jersey.jackson.JacksonFeature"],
"binders": ["com.englishtown.vertx.jersey.AppBinder"]
}

Vertx资源注入

javax.ws.rs.core.Context注释可用于物体注入vert.x到资源构造,场,或方法参数。支持的vert.x对象包括

    • io.vertx.core.http.HttpServerRequest
    • io.vertx.core.http.HttpServerResponse
    • io.vertx.core.streams.ReadStream<io.vertx.core.http.HttpServerRequest>
    • io.vertx.core.Vertx

要注入自定义对象,必须在配置中提供一个或多个活页夹。请参阅注入示例项目。

依赖注入

JerseyVerticle需要依赖项注入。提供Guice和HK2粘合剂:

    • com.englishtown.vertx.guice.GuiceJerseyBinder
    • com.englishtown.vertx.hk2.HK2JerseyBinder

请参阅示例目录以获取可运行的hk2和guice示例。

顶点向导

如果使用vertx-guice,请确保vertx-guice jar位于类路径上,以便vert.x注册GuiceVerticleFactory

注意:需要Guice Multibindings扩展。

vertx-mod-hk2

如果使用vertx-hk2,请确保vertx-hk2 jar在类路径上,以便vert.x注册HK2VerticleFactory

注意:如果您使用的是vertx-mod-hk2,请确保您使用的是1.7.0或更高版本。

示例资源方法

@GET
@Produces(MediaType.APPLICATION_JSON)
public void getQuery(
@Suspended final AsyncResponse response,
@Context ContainerRequest jerseyRequest,
@Context HttpServerRequest vertxRequest,
@Context Vertx vertx) { vertx.runOnLoop(new Handler<Void>() {
@Override
public void handle(Void aVoid) {
response.resume("Hello World!");
}
});
}

承诺

promises包提供when.java包装器来创建JerseyServer。您必须提供when.java依赖项。

以下示例假定com.englishtown.vertx.jersey.promises.WhenJerseyServer已使用com.englishtown.vertx.hk2.WhenHK2JerseyBinderwith vertx-hk2模块注入了实例。

 @Override
public void start(Future<Void> startedResult) throws Exception { JsonObject jerseyConfig = vertx.getOrCreateContext().config().getJsonObject("jersey"); jerseyServer.createServer(jerseyConfig)
.then(server -> {
startedResult.complete();
return null;
})
.otherwise(t -> {
startedResult.fail(t);
return null;
}); }

vertx-jersey的更多相关文章

  1. Vertx和Jersey集成使用

    为了更好地解耦和提高性能,一般将工程的接口部分剥离出来形成一个单独的工程,这样不仅能提高性能,增强可维护性,并且在后台工程宕掉的话对客户端接口的影响较小. 公司使用了Vertx和Jersey,Vert ...

  2. vertx核心类之VertxImpl

    在Vert.x中,Vertx接口是最为重要的一个接口,vertx-core的基础功能都在此接口中提供.这篇文章中我们就来分析一下Vertx接口体系的内部实现以及创建流程.本文对应Vert.x的版本为  ...

  3. vertx verticle

    以下内容为随手记的,若看客不知鄙人所云,还请原谅则个.............. 公司用的vertx,在国内,这还是款比较年轻的框架,你也可以把他当做一个工具,官网上的说法是: Vert.x is a ...

  4. 【数学】Jersey Politics

                                                            Jersey Politics Time Limit: 1000MS   Memory ...

  5. Jersey 2 + Maven + Tomcat + IntelliJ IDEA 搭建RESTful服务

    本文参考以下内容: [1] Starting out with Jersey & Apache Tomcat using IntelliJ [2] [Jersey]IntelliJ IDEA ...

  6. 原创:Equinox OSGi应用嵌入Jersey框架搭建REST服务

    一.环境 eclipse版本:eclipse-luna 4.4 jre版本:1.8 二.Equinox OSGi应用嵌入Jersey框架搭建REST服务 1.新建插件工程HelloWebOSGI a. ...

  7. 【Jersey】基于Jersey构建Restful Web应用

    环境说明 java: 1.6: tomcat: 6.0.48: Jersey:1.18: Jersey介绍 主要用于构建基于Restful的Web程序: 构建基于Maven的Javaweb程序 说明: ...

  8. vertx简单客户端创建

    import java.util.HashMap;import java.util.Map; import com.yunva.vertx.test.vertproject.util.JsonUtil ...

  9. vertx简单服务创建

    import java.util.HashMap;import java.util.Map; import org.slf4j.Logger;import org.slf4j.LoggerFactor ...

随机推荐

  1. Linux下载——下载文件的命令

    Linux下载——获取网络文件的命令 摘抄:本文主要学习了在Linux系统中如何下载文件的命令. wget命令 wget命令是一个用来下载文件的命令,可以在后台运行,在用户退出之后仍能继续下载,支持代 ...

  2. C#程序员在老项目中用到VB遇到的一次坑

    博主自认为C#基础还不错.但是最近接到一个需求,是用VB写的.万般不愿意,不想接触VB,并不是说VB语言不好,而是我真的不喜欢VB.因为没基础过VB,领导派给的任务,有这个需求,不愿意归不愿意,领导给 ...

  3. python中time、datetime模块的使用

    目录 python中time.datetime模块的使用 1.前言 2.time模块 1.时间格式转换图 2.常用方法 3.datetime模块 python中time.datetime模块的使用 1 ...

  4. python web框架Flask——后台登录

    项目搭建 创建一个项目之后,需要在手动创建几个包(含有__init__.py文件的目录)和文件 1.在主目录下创建配置文件:config.py 2.在主目录下创建扩展文件:exts.py 3.在主目录 ...

  5. Lnmp架构部署动态网站环境.2019-7-3-1.2

    Nginx安装 一.安装准备 Pcre(Perl Compatible Regular Expressions,兼容正则表达式)安装pcre库是为了使Nginx支持HTTP Rewrite模块. 安装 ...

  6. 利用logistic回归解决多分类问题

    利用logistic回归解决手写数字识别问题,数据集私聊. from scipy.io import loadmat import numpy as np import pandas as pd im ...

  7. 浅谈DFS序

    浅谈DFS序 本篇随笔简要讲解一下信息学奥林匹克竞赛中有关树的DFS序的相关内容. DFS序的概念 先来上张图: 树的DFS序,简单来讲就是对树从根开始进行深搜,按搜到的时间顺序把所有节点打上时间戳. ...

  8. 【香甜的黄油 Sweet Butter】

    [香甜的黄油 Sweet Butter] 洛谷P1828 https://www.luogu.org/problemnew/show/P1828 JDOJ 1803 https://neooj.com ...

  9. 2019 SDN上机第二次作业

    2019 SDN上机第二次作业 1.利用mininet创建如下拓扑,要求拓扑支持OpenFlow 1.3协议,主机名.交换机名以及端口对应正确,请给出拓扑Mininet执行结果,展示端口连接情况 1. ...

  10. CF-1132 C.Painting the Fence

    题目大意:现在有n个栅栏板,p个工人,每个工人可以涂一段区间的栅栏板,问如果雇佣p-2个工人,最多可以涂多少块栅栏板. 做法:先求出q个工人能涂得最多木板数,并统计每个木板被涂的次数.求被涂一次的木板 ...