允许在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. 【Gradle】Gradle构建脚本基础

    Gradle构建脚本基础 Settings文件 在Gradle中,定义了一个设置文件,用于初始化以及工程树的配置.设置文件的默认名为settings.gradle,放在根工程目录下. 设置文件大多数的 ...

  2. MATLAB实例:PCA降维

    MATLAB实例:PCA降维 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. iris数据 5.1,3.5,1.4,0.2,1 4.9,3.0,1 ...

  3. day8_类的装饰器和反射

    """ 类的装饰器: @property 当类的函数属性声明 @property后, 函数属性不需要加括号 即可调用 @staticmethod 当类的函数属性声明 @s ...

  4. 第九周周五计划&&周四总结

    今天主要将提取地主题词入库以及重新对新闻分类. 测试了一下单纯使用主题词作为主题追踪依据不是很好,明天尝试使用特征值提取(主题词(名词实体))+摘要比对综合.但是目前还没想好是每篇新闻的都要追踪还是热 ...

  5. GitHub 注册失败的原因 以及解决 。

    1.注册的时候老是卡在第一步: 提交用户名和密码 还有邮箱的时候 提交成功后. 不跳出 第二步.若现在去登录账号和密码,不管输对的还是输错的都是显示错误的.2.查看GitHub官网帮助后,不难发现问题 ...

  6. URL、URI、URN之间的区别

    URL统一资源定位符 URI统一资源标识符 URN统一资源名称 URL是URI的一个特例. URI由URL和URN两部分组成. 在java类中,URI类不包含任何访问资源的方法,它唯一的作用就是解析. ...

  7. C#中List<T>转DataTable

      通过查询出来的类的集合的属性集合生成数据行,并通过属性获取每一个实体的指定属性的指定值

  8. 【ECNU3542】神奇的魔术(二分交互题)

    点此看题面 大致题意: 有一个\(1\sim 2^n\)的排列,\(n\le7\),每次交互告诉你有几个位置上的数是正确的,让你在\(1000\)轮以内猜出每个位置上的数. 二分 显然,我们可以通过二 ...

  9. Linux上error while loading shared libraries问题解决方法

    在Linux环境执行程序时经常会遇到提示程序依赖动态库.so文件不存在的情况,出现报错"error while loading shared libraries: XXXX.so.XX: c ...

  10. Visual Studio 2015 Tools for Unity使用基础

    Unity4.x编辑器侧 具体版本号:Visual Studio 2015 Tools for Unity 3.7.0.1 该插件在:Microsoft Visual Studio Tools for ...