微服务:

   传输协议基本都是http,数据序列化,协议层目前protocol buffer,Json, xml,Java序列化,最多使用Json。实现以上二点并不难,spring 就可以,但spring 的初衷是为了搞一套简化web开发,微服务最大特点,快速开发,持续交付,快速部署,

Jersey+Jetty ,正是符合这个特点。

Jersey:

Jersey RESTful 框架是开源的RESTful框架, 实现了 JAX-RS 规范。它扩展了JAX-RS 参考实现, 提供了更多的特性和工具, 可以进一步地简化 RESTful service 和 client 开发。

 1 @Path("/base")
 2 public class BaseServer  {
 3
 4
 5     @Path("/add")
 6     @GET
 7     @Produces(MediaType.TEXT_PLAIN)
 8     @Override
 9     public String add(@QueryParam("x") int x, @QueryParam("y") int y) {
10         return "" + (x + y);
11     }
12 }

View Code

Jetty:

Jetty 是一个开源的servlet容器,项目可以不用打成war包,可以使用jetty这样嵌入式的serlvet容器,它比tomcat更轻量 Jetty9支持最新NIO,不再支持BIO

Jetty Server两个重要的概念一个是Handler,一个是Connector。嵌入一个jetty服务一般会有下面几步,创建Server,加载Connectors,加载handlers,加载Servlets等,启动服务start,最后加入服务器join。

一个Jetty Server可以看成由一下几部分组成,其中Connector负责接收客户端的HTTP请求,请求的处理是由Handler来完成的。

Handler在Jetty中是一个非常重要的东西,Jetty内部实现了一些Handler,可以分为一下几类:

1.协调Handler:负责将request路由到其他Handler的Handler(如:HandlerConnection, ContextHandlerConnection)

2.过滤Handler:负责向request中设置一些参数,然后再把请求转交给其他Handler(如:HandlerWapper, ContextHandler,        SessionHandler)

    3.生成Handler:负责生成响应的内容(如:ResourceHandler, ServletHandler)

    HandlerWrapper,AbstractHandler Server类就是实现HandlerWrapper,其它一些自定Handler通过继承AbstractHandler实现

 1 public class HelloHandler extends AbstractHandler {
 2     public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
 3             throws IOException, ServletException {
 4         response.setContentType("text/html;charset=utf-8");
 5         response.setStatus(HttpServletResponse.SC_OK);
 6         baseRequest.setHandled(true);
 7         response.getWriter().println("<h1>Hello World1</h1>");
 8         response.getWriter().println("Request url: " + target);
 9     }
10
11     public static void main(String[] args) throws Exception {
12         Server server = new Server();
13         ServerConnector serverConnector = new ServerConnector(server);
14         serverConnector.setPort(8031);
15         //ServletContextHandler servletContextHandler = new ServletContextHandler();
16         server.setHandler(new HelloHandler());
17         server.addConnector(serverConnector);
18         //servletContextHandler.addServlet(new ServletHolder(new HelloHandler()),"/hello");
19         server.start();
20         server.join();
21
22     }
23 }

View Code

ServerConnector 是Jetty 9 提供NIO方式

 Jsery+Jetty如何接合

    jsery中有一个类ServletContainer,它直接从HttpServlet继承而来,直接插入Jetty ServletContextHandler.addServlet方法中。ServletContainer构造方法会要求注入一个实现Application类,这个类用来扫描包,它service方法拦截了全部请求,并把它转向Jsery对应类方法中

  

 1 private static final ResourceConfig resourceConfig = new MyResourceConfig("com.test");
 2     public static void main(String[] args) throws Exception {
 3         Server server = new Server();
 4         ServerConnector serverConnector = new ServerConnector(server);
 5         serverConnector.setPort(8012);
 6         ServletContextHandler servletContextHandler = new ServletContextHandler();
 7
 8         ServletContainer servletContainer = new ServletContainer(resourceConfig);
 9         server.addConnector(serverConnector);
10
11         servletContextHandler.addServlet(new ServletHolder(servletContainer),"/*");
12         server.setHandler(servletContextHandler);
13         server.start();
14         server.join();
15
16     }
17     @Path("/add")
18     @GET
19     @Produces(MediaType.TEXT_PLAIN)
20     public String add(@QueryParam("x") int x, @QueryParam("y") int y) {
21         return "" + (x + y);
22     }

View Code

包扫描方式 使用jersey 注解包扫描类PackageNamesScanner

 

转载于:https://www.cnblogs.com/shouhongxiao/p/5824961.html

Jersey +jetty 实现微服务(一)相关推荐

  1. 简单聊聊SOA和微服务

    本文转载自:http://dockone.io/article/2399 前两天和一个朋友聊天,他向我咨询如何从零开始构建一个健壮.强大的软件系统,聊着聊着他忽然问我,「听大家都在说微服务(下文中有的 ...

  2. 全球数据一致性,事务,微服务和Spring Boot / Tomcat / Jetty

    我们通常会构建需要一起执行以下几项操作的应用程序:调用后端(微)服务,写入数据库,发送JMS消息等.但是,如果在调用其中之一时出错,会发生什么情况?远程资源,例如,在调用Web服务后,如果数据库插入失 ...

  3. Re:从0开始的微服务架构--(二)快速快速体验微服务架构?--转

    原文地址:https://mp.weixin.qq.com/s/QO1QDQWnjHZp8EvGDrxZvw 这是专题的第二篇文章,看看如何搭建一个简单模式的微服务架构. 记得好久之前看到一个大牛说过 ...

  4. 主流Java微服务框架有哪些?-开课吧

    本文我们简单聊聊当下主流的3个Java微服务框架,看看各自的特点. 1.Spring and SpringBoot SpringBoot在Java微服务领域绝对是一哥,毫无争议,据说已经占据57%的市 ...

  5. 创建微服务架构的步骤_如何快速搭建一个微服务架构?

    原标题:如何快速搭建一个微服务架构? 微服务火了很久,但网上很少有文章能做到成熟地将技术传播出来,同时完美地照顾"初入微服务领域人员",从 0 开始,采用通俗易懂的语言去讲解微服务 ...

  6. 如何快速搭建一个 “简单模式” 的微服务架构

    何谓微服务架构的简单模式? 相对于大型互联网平台动辄几万并发的访问量,或者每天多次的在线版本发布,绝大多数企业和项目并没有这样的需求.他们关注的是如何更好地提高开发效率,如何更快地实现新需求,如何更便 ...

  7. Re:从0开始的微服务架构:(二)如何快速体验微服务架构?

    记得好久之前看到一个大牛说过:如果单体架构都搞不好,就别搞微服务架构.乍一看,这句很有道理,后来发现这句话是不太对的,因为微服务架构的目的就是为了降低系统的复杂性,所以 微服务架构应该比单体架构更简单 ...

  8. Java微服务框架一览

    原文:Java Microservices: Code Examples, Tutorials, and More 作者:Angela Stringfellow 翻译:雁惊寒 译者注:本文首先简单介绍 ...

  9. 秒杀springboot——未来轻量级高性能的Java云原生微服务框架来啦

    秒杀springboot--未来轻量级高性能的Java云原生微服务框架来啦 引子 自2003年Rod.Juergen 和 Yann开发并发布Spring项目后,J2EE 迎来了新的开始.在 2013 ...

最新文章

  1. excel的if函数中android,excel中if函数嵌套式使用教程
  2. 想买啥 VS 买了啥!理想与现实的差距咋就这么大咧?
  3. jQuery中.html(“xxx”)和.append(xxx)的区别和不同
  4. 大地形实时渲染资源网收集
  5. springMVC源码分析
  6. woe分析_Python数据分析—apply函数
  7. 地图分幅组件的实现(一) ——图号和经纬度转换组件
  8. Vmware 安装centos7与网络配置
  9. pcb布线注意点:晶振
  10. java获取局域网所有ip_java如何获取局域网内全部IP?
  11. java计算机毕业设计校园讲座管理源码+系统+lw文档+mysql数据库+部署
  12. CMMI3-CMMI5评估认证需要遵循七大原则
  13. 用Java判断ab大小_比例类数据的差异性检验与AB测试的终止点
  14. 1、Ribbon概述
  15. SAP FI 科目代码
  16. MATLAB---形态学滤波
  17. 蔡氏电路matlab,蔡氏电路matlab仿真报告.doc
  18. xshell6设置选中复制 右键粘贴复制内容
  19. html转换成canvas一片空白,html2canvas截图空白问题怎么解决 html2canvas截图空白问题解决方法...
  20. 中国发布了31个加密货币项目排名

热门文章

  1. SEO技巧--代码优化
  2. js中应用protocol buffer
  3. 淘宝Tprofiler工具实现分析
  4. swift的可选项--optional/?
  5. 一个资源管理系统的设计--基于cgroup机制
  6. tcpdump命令--详解
  7. java SSL 简单操作demo
  8. cus系统前台改版 beta1.1发布
  9. netcat运行出错
  10. Archlinux 简明安装指南