java grizzly_java grizzly实现http服务器
记得红薯大哥以前贴过一个mina的http服务器的实现,我就贴一个grizzly的。说起mina这个java网络通讯组件可是大名鼎鼎,说是高性能,的却性能强大。但是还有比它性能更强大的呢 就是这个 grizzly,glassfish就基于它。是个比mina性能更为强大的网络通讯组件,同样基于java NIO开发。我贴的代码是用它实现一个http服务器。
1.[代码][Java]代码
import org.glassfish.grizzly.http.server.HttpServer;
import org.glassfish.grizzly.http.server.NetworkListener;
import org.glassfish.grizzly.threadpool.ThreadPoolConfig;
import java.io.IOException;
public class MyHttpServer {
public static void main(String[] args) {
HttpServer httpServer = new HttpServer();
NetworkListener networkListener = new NetworkListener("sample-listener", "127.0.0.1", 18888);
ThreadPoolConfig threadPoolConfig = ThreadPoolConfig
.defaultConfig()
.setCorePoolSize(1)
.setMaxPoolSize(1);
networkListener.getTransport().setWorkerThreadPoolConfig(threadPoolConfig);
httpServer.addListener(networkListener);
MyHttpHandler httpHandler = new MyHttpHandler();
httpServer.getServerConfiguration().addHttpHandler( httpHandler,new String[]{"/sample"});
try {
httpServer.start();
while(true){
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
import org.glassfish.grizzly.http.server.HttpHandler;
import org.glassfish.grizzly.http.server.Request;
import org.glassfish.grizzly.http.server.Response;
import org.glassfish.grizzly.http.util.HttpStatus;
import org.glassfish.grizzly.threadpool.GrizzlyExecutorService;
import org.glassfish.grizzly.threadpool.ThreadPoolConfig;
import java.util.concurrent.ExecutorService;
public class MyHttpHandler extends HttpHandler {
final ExecutorService complexAppExecutorService =
GrizzlyExecutorService.createInstance(
ThreadPoolConfig.defaultConfig()
.copy()
.setCorePoolSize(5)
.setMaxPoolSize(5));
public void service(final Request request, final Response response) throws Exception {
response.suspend(); // Instruct Grizzly to not flush response, once we exit the service(...) method
complexAppExecutorService.execute(new Runnable() { // Execute long-lasting task in the custom thread
public void run() {
try {
response.setContentType("text/plain");
// Simulate long lasting task
Thread.sleep(10000);
response.getWriter().write("Complex task is done!");
} catch (Exception e) {
response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR_500);
} finally {
response.resume();
}
}
});
}
}
java grizzly_java grizzly实现http服务器相关推荐
- Grizzly开发Echo服务器实战
Grizzly开发Echo服务器实战 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 用Java编写可伸缩的服务器应用是有难度的,用Java NIO开发. ...
- java http服务端例子_简单的用 Java Socket 编写的 HTTP 服务器应用
/*** SimpleHttpServer.java*/importjava.io.*;importjava.net.*;importjava.util.StringTokenizer;/*** 一个 ...
- java 直播服务器_MyLive--使用JAVA实现的直播RTMP服务器
MyLive 使用JAVA实现的直播RTMP服务器 介绍 MyLive 是一个我用业余时间使用Java实现的RTMP直播服务器,它并不是一个全功能的RTMP实现,也就是说不支持seek和play2命令 ...
- 用JAVA SOCKET编程,读服务器几个字符,再写入本地显示
Server: package cn.itcast.framework.socket;import java.io.BufferedReader; import java.io.IOException ...
- Java Web项目在Linux服务器自动化部署续-整合Bamboo
前言 Java Web项目在Linux服务器自动化部署 在这一篇中, 完成的是一个自动化部署的脚本. Atlassian Bamboo 是一款持续集成构建服务器软件(Build Server) 软件地 ...
- JAVA实现简单的FTP服务器
JAVA实现简单的ftp服务器 通过界面可启动FTP服务,先看看看效果,然后具体代码附后. 点击启动FTP服务后,可以看到控制台: 可以通过get和send以及dir执行相对应的操作. 点击退出按钮, ...
- Java web项目如何在服务器上跑起来(有源码)
Java web项目如何在服务器上跑起来(有源码) 要用到的工具有:myeclipse.宝塔,navicat premium.xshell. 概述:本博文主要是帮助入门级新手怎么从网上下载一个java ...
- Java项目部署到云服务器的思路
Java项目部署到云服务器的思路 1 部署项目的前提条件 1.1 购买云服务器 我购买的是腾讯云的服务器,第一年享优惠88一年 cpu好像两核的,作为入门级的也算够用了 如果第二年该续费的时候,我记得 ...
- 微信公众号-java上传图片素材到微信服务器基于事件推送两条消息
微信公众号-java上传图片素材到微信服务器&基于事件推送两条消息 场景:基于微信扫码登录/关注事件,向用户推送两条消息. 分析:翻阅了微信开发者文档和一些其他资料发现,公众号针对用户关注/扫 ...
最新文章
- MOSS2007 实现单点登陆
- 整理了一个castle的文档,供大家学习使用
- 百万级分组大报表开发与呈现
- 使用Tensoflow实现梯度下降算法的一次线性拟合
- java 将json转换成sql_search-sqlparams
- C# 根据年、月、周、星期获得日期等
- kubernetes 安装 helm,ingress
- 没有躲过的坑--vector使用erase后迭代器变成野指针
- Android系统启动-SystemServer下篇
- 姚前:算法经济与算法监管
- 寻找两个正序数组中的中位数 数组
- 【谷粒学院】项目总结
- eclipse在线汉化站点
- [linux]LINUX程序设计cc1--入门
- 用c语言合并两个有序单链表,c++ 如何合并两个有序链表
- HTML段落前面怎么加黑点,Word文档段落前面的那个小黑点,是怎么搞出来得呀?...
- 算法设计与分析——顺序统计量:最大值与最小值
- D2RQ 的安装和基本使用
- Android 集成 google 登录并获取 性别等隐私信息
- 重复性、分辨率的计算方法
热门文章
- python3 修改字符串的四种方法 错误 'str' object does not support item assignment 解决方法
- 百度搜索 带网页特效的关键词
- 交换分区的查看与扩容
- Linux操作系统基础 Intel32位系统架构总览
- swiper 定义放多少张图片,小程序swiper轮播图,自定义样式,两种方法:原生方法和bindchange方法;将点点改为数字(当前第几张 /总共几张);点击点点跳转当前图片...
- Qt下使用Shader绘制三角形
- python计算结果传给spark_将Python函数作为对象传递给Spark
- realme怎么互传_realme真我X7 Pro首发体验:非常轻快,颜值不赖
- php 实现 pacs 系统,影像管理系统(PACS)
- node 升级_技术周刊( Node.js 12 性能大提升 2019-04-30)