wement.io的服务器准备采用vertx来开发,vertx的开发速度非常快,有很多写好的组件,这篇文章作为学习vertx的第一篇文章,总结了一些新手可能会遇到的问题。
vertx关于对StaticHandler的使用的理解
vertx中的StaticHandle是一个非常有用的处理静态资源的处理器,里面已经帮你实现了对静态资源的各种访问设置,但是使用过程中,我把/*映射给了静态资源webroot,发现我无法添加新的route了,新route添加了都不接受事件响应。
原因就是所有请求都让StaticHanle拦截了,对StaticHanle的使用应该让它走一个新的不一样的route,比如/static/*,这样的好处是,区分开了静态资源的访问,同时保护你的资源目录,这样修改了之后,你的webroot中的网页链接应该都加上/static/前缀,因为他们都会通过StaticHanle拦截,没有/static/的话,你的server是不认识的。
怎样添加新
route并指向静态资源的某个网页呢?比如/about我需要让它能够访问静态资源中的/webroot/about.html,因为我可能需要传递数据渲染网页中
代码示例:
router.route("/about").handler(rc->{ |
对,就是reroute,同时注意你的路径,需要加/static/前缀
这是网友大神赵尘恩给的一个解释性描述
route原理就是从上往下找match的路径,reroute就是把拦截到的再重新转发一下,如果reroute到同一个path容易造成死循环,还有web是通过前缀区分的,所以如果用/*来route的话,就会把所有的请求全部拦截到,应该加上/static/*来拦截
使用vertx的oauth2客户端验证授权github
直接撸代码把
初始化:
private void init() { |
路由:
router.route("/login/github").handler(routingContext -> login_github(routingContext)); |
这样简历2个路由,分别用来请求授权,获取authcode
/** |
/** |
80端口问题
我使用的IDE是idea,测试发现让vertx去绑定80端口,提示严重: java.net.SocketException: Permission denied,如果你的端口被占用了,执行下面两个步骤
- 检查80端口是否被占用:
lsof -i:80 - 如果被占用,则杀死进程:
kill -9 [pid]
发现结果还是无权限,后来才发现原因:执行运行java程序没有sudo,尚不知怎么解决怎么从idea执行,不过你可以先打包出来,然后使用sudo java -jar XXX-production.jar来执行你的生成jar包
vertx给我的感觉
vertx非常灵活,然后又帮你做了非常多的大家都要做的一致性的工作,一致性的意思就是,代码都是那样,是共同的,非常喜欢vertx,之前学过play2,springmvc之类的java web框架,最后都前者因为极少中文文档,需要翻墙,开发者更是少之又少,国内也没见有推广它的,后缀因为过于庞大,要学的东西太多而放弃了,一直在寻找一个像vertx一样的java web框架,现在终于找到了。
欢迎加入我们的社群讨论技术
JavaFx最大最活跃的社群:518914410
Vertx中国用户组:515203212