还能再简单么?——消息框架的嵌入jettyserver

    开发框架最重要的功能是提高开发效率,没有框架,我们当然可以用基本的代码写出各种应用,但是这效率极低。开发效率是检验一个框架最重要的指标。

    之前我开发总是启动tomcat,虽然这没有任何问题,但是从程序启动、部署都是比较麻烦的事情。虽然也曾想做个tomcat嵌入,但一直没有耐心去完成,直到遇到jetty。我欣赏jetty一个理念——服务器应该是程序的一部分。是的,这非常正确。服务器承担着网络接口,当然要作为程序的一部分,如果程序要依赖外在的接口,那不是完整的。框架有自己的服务器,那么许多都变得容易和有趣了。现在我们看消息框架中jetty是如何使用的(代码简单,有兴趣看源码,这里就不介绍了)。

   我们jetty嵌入只通过两个类,server类:TLJettyServer,请求入口类:TLServletDispatch。

  TLJettyServer加载后将启动一个jetty server。如果这个server直接处理标准web应用,既从web.xml加载配置,则不需要TLServletDispatch。下面看配置,通过配置我们来看怎么使用:

 <modulesParams>
    <module name="jettyServer"
                port="8082"
                contextType="no webapp"
                resourceBase="D:\javaweb\web"
                loglevel="debug"
                contextPath="/"
                servletPath="/ltbgadmin/"
                connector="http;https"
                httpsPort="5789"
                sslCerFile="D:\javaweb\web\WEB-INF\classes\tomcat.keystore"
                sslCerFilePwd="dqqaz123"
        />
  </modulesParams>

 这是我们工厂配置中对jetty的配置。配置比较简单,从字面就可以看出参数的意义。

connector定义连接协议,如果不启用https,则只定义http即可。httpsport ,sslCerfile ,sslCerfilePwd 为https参数。

这里重要是 contextType ,如果定义为“webapp”,则解析标准web.xml,既现有tomcat的web配置,也就是说,如果我们从外置tomcat改为内嵌jetty,只需设置  contextType="webapp"  ,

同时资源路径resourceBase为原tomcat的web路径。jetty自动解析资源路径的WEB-INF/web.xml文件,启动内容与原tomcat一致。因此我们就可以在外置tomcat和内嵌jetty之间任意转换而无需任何代码改动。

如果contextType 定义任何非“webapp”字符,则启动TLServletDispatch来分发需求,对应的url路径为servletPath。上例子中,对应"/ltbgadmin/" ,对应该路径下的访问启动框架处理。

在我们的消息框架标准web开发中(见前期介绍),对应每个请求由一个过滤器来接管,交由框架处理。而这里通过TLServletDispatch来接管请求,接管后的处理方式与标准web处理一致。

标准“webapp”模式的一个好处是,在web.xml可以启动多个应用。而ServletDispatch模式只能是一个映射路径,也就是一个应用。

TLJettyServer 也是普通消息模块,启动方式与其他模块一样,可以在任何地方通过getModule(“jettyServer”)来启动,也可以在工厂boot过程中加载启动。

   

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值