vertx-jersey
允许在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对象。只有使用,如果ssl
是true
。receive_buffer_size
-int接收缓冲区的大小。该值是可选的。max_body_size
-允许的最大int主体大小。默认值为1MB。backlog_size
-设置http服务器待办事项大小的整数。默认值为10,000
您必须配置至少一个软件包或组件。
您还可以在jersey
json字段下将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.WhenHK2JerseyBinder
with 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的更多相关文章
- Vertx和Jersey集成使用
为了更好地解耦和提高性能,一般将工程的接口部分剥离出来形成一个单独的工程,这样不仅能提高性能,增强可维护性,并且在后台工程宕掉的话对客户端接口的影响较小. 公司使用了Vertx和Jersey,Vert ...
- vertx核心类之VertxImpl
在Vert.x中,Vertx接口是最为重要的一个接口,vertx-core的基础功能都在此接口中提供.这篇文章中我们就来分析一下Vertx接口体系的内部实现以及创建流程.本文对应Vert.x的版本为 ...
- vertx verticle
以下内容为随手记的,若看客不知鄙人所云,还请原谅则个.............. 公司用的vertx,在国内,这还是款比较年轻的框架,你也可以把他当做一个工具,官网上的说法是: Vert.x is a ...
- 【数学】Jersey Politics
Jersey Politics Time Limit: 1000MS Memory ...
- Jersey 2 + Maven + Tomcat + IntelliJ IDEA 搭建RESTful服务
本文参考以下内容: [1] Starting out with Jersey & Apache Tomcat using IntelliJ [2] [Jersey]IntelliJ IDEA ...
- 原创:Equinox OSGi应用嵌入Jersey框架搭建REST服务
一.环境 eclipse版本:eclipse-luna 4.4 jre版本:1.8 二.Equinox OSGi应用嵌入Jersey框架搭建REST服务 1.新建插件工程HelloWebOSGI a. ...
- 【Jersey】基于Jersey构建Restful Web应用
环境说明 java: 1.6: tomcat: 6.0.48: Jersey:1.18: Jersey介绍 主要用于构建基于Restful的Web程序: 构建基于Maven的Javaweb程序 说明: ...
- vertx简单客户端创建
import java.util.HashMap;import java.util.Map; import com.yunva.vertx.test.vertproject.util.JsonUtil ...
- vertx简单服务创建
import java.util.HashMap;import java.util.Map; import org.slf4j.Logger;import org.slf4j.LoggerFactor ...
随机推荐
- CSS3 新增选择器
CSS3 新增选择器 结构(位置)伪类选择器(CSS3) :first-child :选取属于其父元素的首个子元素的指定选择器 :last-child :选取属于其父元素的最后一个子元素的指定选择器 ...
- 裸奔的支付X聊天,你还敢用吗?
- 语音消息 使用HTTP明文传输,没有任何加密措施,使用域名为up-mayi.django.t.taobao.com,从报文中可以看出,语音消息是以文件形式在网络中传输的,下图为一次语音的发送传输过 ...
- Android SearchView不显示搜索icon
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/80 背景: 之前碰到了一个页面展示问题,SearchVie ...
- split("\\,")引起的java.lang.ArrayIndexOutOfBoundsException异常解决方案
由split("\,")引起的指标越界异常 如果字符串最后分隔符里的字段为空,使用split("\\,")进行切割时,最后的空字段不会切割 例如"a, ...
- MIPI CSI2学习(一):说一说MIPI CSI2
1. MIPI CSI2简介 MIPI联盟是一个开放的会员制组织.2003年7月,由美国德州仪器(TI).意法半导体(ST).英国ARM和芬兰诺基亚(Nokia)4家公司共同成立.MIPI联盟旨在推进 ...
- Centos7下安装配置keepalived
这里用的是两台设备做高可用 master服务器ip地址:192.168.12.78 slave服务器ip地址:192.168.12.79 虚拟ip(VIP,一个尚未占用的内网ip即可)地址:192.1 ...
- 5-4 可视化库Seaborn-回归分析
In [2]: %matplotlib inline import numpy as np import pandas as pd from scipy import stats,integrate ...
- CodeForces 1236D(模拟)
题意 https://vjudge.net/problem/CodeForces-1236D 最近,爱丽丝得到了一个新玩偶.它甚至可以走路! 爱丽丝为玩偶建造了一个迷宫,并想对其进行测试.迷宫具有n行 ...
- ACM-求质因数
求输入数字的所有质因数,并将所有质因数进行排序,并以质因数+空格的形式输出 #include <iostream> #include <string> #include < ...
- IntelliJ IDEA 创建动态的JavaWeb工程(五)
1. 创建动态的web项目 如果创建项目后没有自动创建web文件夹,即没有自动创建 web.xml 及 index.jsp 文件,还可以通过IDEA编辑器中的File -- Project Struc ...