• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

codecat: auto deploy plugins for server

原作者: [db:作者] 来自: 网络 收藏 邀请

#CodeCat##一句话简介codecat是一款http 服务器中间件,模仿tomcat的功能,目前实现了热部署热卸载路由转发功能。##快速使用

  • cd /home/xxx/codecat/bin 查看项目的bin目录
  • sudo chmod +x startup.sh 修改启动脚本,获得执行权限
  • redis-server 开启redis server , 并且可以启动一个客户端实时查看键值对情况, hgetall codecat 可以查看所有的port path的映射关系
  • ./startup 8080 开启codecat服务,注意这个操作会试图关闭你计算机的防火墙(测试的时候用),后面的参数是用户可以指定的codecat的服务端口。
  • 打开浏览器访问localhost:8080(或者你指定的端口) 访问服务根目录
  • cp codecat-api.jar /home/xxx/your project 将bin下的 codecat-api.jar引入你的项目,注意项目在打包的时候命好名,因为这个名字将是你这个项目的根目录名字。新建一个类,让其继承 BasicHttpHandler这个类,并实现 service方法,该方法的返回值会输出到页面上,并在该类上加注解@Path("/xxx"),表示该类处理的请求路径。代码如下:
@Path("/timer")public class TimerHandler extends BasicHttpHandler {    @Override    public Object service(Object msg) {        String timestamp = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss").format(new Date());        return "<h1>"+timestamp+"</h1>";    }}

这里我写了一个获得当前系统时间的类。

  • 讲jar包放入 codecat/apps 下,这里有个小问题,第一次放可能会失败,删除再放一次就好 假设你的jar包叫 index.jar ,此时访问localhost:8080/index/timer,即可看到当前系统时间。

##对比tomcattomcat的热部署 是无法再被卸载的,因此 codecat 引入了热卸载的概念,codecat内部使用一个代理,启动的时候默认代理一个server,每当用户向codecat/apps 中放入一个新的jar包后,codecat会读取jar包内相应的类,启动一个新的端口并注册到代理,启动之前把新的类加载到新的server以jar包的名字作为项目根目录,从而达到一个jar包对应一个realserver端口的效果。用户的直接感受就是访问的端口没有变过。当用户卸载(删除)jar时, codecat 会根据所删除jar包名字,将映射的端口关闭,从而达到用户无法访问该jar包的功能的效果,来达到卸载的目的。

##尚存的缺陷BUG

  • **1.**首次上传jar的时候可能读取不到jar包内容。
  • **2.**卸载(删除)jar的时候,需要用 rm -f xxx.jar,图形化删除或用delete键都无法被见听到。
  • **3.**用户api模块的 BasicHttpHandler尚且不完善,还没有封装httprequest,httpresponse,httpsession等类。

##备注:###目录文件监听功能使用了第三方库 JNotify###感谢感谢 李敖 大牛提供的技术思路andilylia


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap