Eureka 学习笔记(四)原生Eureka-Server启动入口寻找

一、先去GitHub上下载源码,瞄一眼目录结构。

在这里插入图片描述

    根据笔者小学的英文水平加上百度大概看出来,分为code核心模块、client客户端模块、server服务端模块、resource资源模块、examples用例、utils工具包几个模块吧。。

    接着又发现了有这么几个三级项目名archaius2、jersey2、governator。经过再一次的百度查询,发现governator是一个用来增强 Google Guice 框架的库、扩展和工具集,提供类路径扫描和自动绑定、生命周期管理、配置到字段的映射、字段验证和并行对象热身 (parallelized object warmup).

    archaius是netflix开源的动态属性配置框架,基于apache commons configuration, 提供在运行时获取配置值的功能.

    eureka-core-jersey2是一个类似于SpringMvc的框架。(⊙o⊙)…一个也没用过…

二、本着先看服务端的思想,笔者先打开了两个服务端的项目。

    突然发现`eureka-server-governator项目的readme中写了这么一句话,This server build is still experimental.此服务构建依然处于试验阶段。。。这时笔者也无语了,既然你是试验阶段,那就跳过吧。
在这里插入图片描述

    没办法,那就看看eureka-server项目吧~
在这里插入图片描述

    从图中可以看到貌似也没有什么代码,就是几个配置文件和一个测试类。接着笔者把几个配置文件都瞄了一眼,在web.xml文件里面发现了一些有趣的东西。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <listener>
    <listener-class>com.netflix.eureka.EurekaBootStrap</listener-class>
  </listener>

  <filter>
    <filter-name>statusFilter</filter-name>
    <filter-class>com.netflix.eureka.StatusFilter</filter-class>
  </filter>

  <filter>
    <filter-name>requestAuthFilter</filter-name>
    <filter-class>com.netflix.eureka.ServerRequestAuthFilter</filter-class>
  </filter>
  <filter>
    <filter-name>rateLimitingFilter</filter-name>
    <filter-class>com.netflix.eureka.RateLimitingFilter</filter-class>
  </filter>
  <filter>
    <filter-name>gzipEncodingEnforcingFilter</filter-name>
    <filter-class>com.netflix.eureka.GzipEncodingEnforcingFilter</filter-class>
  </filter>

  <filter>
    <filter-name>jersey</filter-name>
    <filter-class>com.sun.jersey.spi.container.servlet.ServletContainer</filter-class>
    <init-param>
      <param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name>
      <param-value>/(flex|images|js|css|jsp)/.*</param-value>
    </init-param>
    <init-param>
      <param-name>com.sun.jersey.config.property.packages</param-name>
      <param-value>com.sun.jersey;com.netflix</param-value>
    </init-param>

    <!-- GZIP content encoding/decoding -->
    <init-param>
      <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
      <param-value>com.sun.jersey.api.container.filter.GZIPContentEncodingFilter</param-value>
    </init-param>
    <init-param>
      <param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
      <param-value>com.sun.jersey.api.container.filter.GZIPContentEncodingFilter</param-value>
    </init-param>
  </filter>

  <filter-mapping>
    <filter-name>statusFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <filter-mapping>
    <filter-name>requestAuthFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!-- Uncomment this to enable rate limiter filter.
  <filter-mapping>
    <filter-name>rateLimitingFilter</filter-name>
    <url-pattern>/v2/apps</url-pattern>
    <url-pattern>/v2/apps/*</url-pattern>
  </filter-mapping>
  -->

  <filter-mapping>
    <filter-name>gzipEncodingEnforcingFilter</filter-name>
    <url-pattern>/v2/apps</url-pattern>
    <url-pattern>/v2/apps/*</url-pattern>
  </filter-mapping>

  <filter-mapping>
    <filter-name>jersey</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <welcome-file-list>
    <welcome-file>jsp/status.jsp</welcome-file>
  </welcome-file-list>

</web-app>

    从web.xml里面可以看到,它配置了一个EurekaBootStrap的监听器和五个拦截器StatusFilterServerRequestAuthFilterRateLimitingFilterGzipEncodingEnforcingFilterServletContainer
    从名字上来看,EurekaBootStrap可能是一个启动类,StatusFilter是状态拦截器,ServerRequestAuthFilter是和权限相关的拦截器,RateLimitingFilter经过百度翻译是一个限流的拦截器、GzipEncodingEnforcingFilter是编码相关的拦截器、ServletContainer是和Servlet相关的拦截器。以上仅是笔者猜测,不一定正确。并且需要注意的是,RateLimitingFilter拦截器的filter-mapping是注释掉的,也就是默认是不开启的~

三,EurekaBootStrap类查看

在这里插入图片描述

    可以看到EurekaBootStrapEureka-core项目中,并且实现了javax.servlet.ServletContextListener接口,这个接口是Servlet原生API的。那么我们就可以去看一下它的contextInitialized方法了~
在这里插入图片描述

    大致就是这样,看名字是先初始化了一下环境参数,接着初始化了Server上下文,最后拿到上下文,设置了一个参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值