RESTEasy底层使用Netty

为什么底层要使用Netty

原来在使用RESTEasy的时候底层使用的是Tomcat,但是Tomcat的I/O性能不如Netty,一直想把Tomcat换成Netty,最近有时间就更换一下。

怎么使用

首先看一下对应依赖

        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxrs</artifactId>
            <version>${resteasy.version}</version>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty</artifactId>
            <version>${netty.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-netty</artifactId>
            <version>${resteasy.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>io.netty</groupId>
                    <artifactId>netty</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

Jboss提供了RESTEasy对netty的支持,直接引入就好。

下面是实现的服务启动的代码

public class RestNettyServer implements RestServer {

    private String rootResourcePath = "/";

    private String hostName;

    private int port = 8341;

    private int ioWorkerCount = Runtime.getRuntime().availableProcessors() * 4;

    private int executorThreadCount = 16;

    private SSLContext sslContext = null;

    private int maxRequestSize = 10 * 1024 * 1024;

    private NettyJaxrsServer nettyServer;

    private ResteasyDeployment deployment = new ResteasyDeployment();

    public void start() {
        nettyServer = new NettyJaxrsServer();
        nettyServer.setDeployment(deployment);
        nettyServer.setPort(port);
        nettyServer.setRootResourcePath(rootResourcePath);
        nettyServer.setIoWorkerCount(ioWorkerCount);
        nettyServer.setExecutorThreadCount(executorThreadCount);
        nettyServer.setMaxRequestSize(maxRequestSize);
        nettyServer.setSSLContext(sslContext);
        nettyServer.setKeepAlive(true);
        if (hostName != null && "".equals(hostName)) {
            nettyServer.setHostname(hostName.trim());
        }
        nettyServer.setSecurityDomain(null);
        nettyServer.start();
        System.out.println("Netty rest server started on port(s): " + port);
    }

    public void addProvider(Collection<Object> providers) {
        if (providers != null && !providers.isEmpty()) {
            deployment.getProviders().addAll(providers);
        }
    }

    public void addResources(Collection<Object> instances) {
        if (instances != null && !instances.isEmpty()) {
            deployment.getResources().addAll(instances);
        }
    }

}

代码在这里resteasy-netty不能上传免费的了,必须要积分,大家见谅吧。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值