为什么底层要使用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不能上传免费的了,必须要积分,大家见谅吧。