前言
目前参与的项目是基于JFinal1.9与Dubbo,Zookeeper整合,由于不熟悉Dubbo做什么用的,所以尝试脱离业务,搭一个出来环境出来,试图弄明白其中的条条框框,实现的功能.
基于最新的JFinal3.0+Dubbo+Zookeeper3.4.8
参考资料
站在巨人的肩膀上,轻松愉快的搭建工程
http://git.oschina.net/lianghao2016/JDoc
https://www.oschina.net/code/snippet_1175852_47421
https://my.oschina.net/u/1175852/blog/404261
https://my.oschina.net/u/1175852/blog/404262
https://my.oschina.net/u/1175852/blog/404264
开工
基本流程参看糊搞大神的JFinalDubboDemo.doc
说说在期间遇到的问题.
1.SpringPlugin
自JFinal1.9后去除了SpringPlugin,这里从1.9里把3个java文件copy过来,修改IocInterceptor中代码.下图示,改完后JFinal3.0就能使用SpringPlugin了.
2.multicast注册中心
也许是年久失修的关系,multicast注册中心配置后,provider端一直启动不能,
换成Zookeeper后,顺利启动,这里provider端与consumer端的注册中心都要替换掉.
3.Controller.getModel(class)问题
重现了此问题:在Demo运行起来后,对Blog进行创建和修改操作时出现了“Html 500”的错误.
文档中是使用TableInitKit 在consumer端手动对模型初始化, 考虑到每个model都要手动操作,选择了跟provider端一样启动的时候把模型绑定,问题解决.
上面这种做法是错误的!!,
参考文章后,修改如下
https://my.oschina.net/u/1175852/blog/404262
https://my.oschina.net/aixiaohua/blog/610516
1.在前人的基础上,完善了一下代码生成器,在生成model的时候,同时生成生成绑定model的方法.
调用端在afterJFinalStart中调用model绑定方法即可
Api的pom.xml中设置忽略掉两个_generator类,避免泄露一些关键信息
4.spring.xml存放路径
从resources下加载,跟a_little_config.txt等文件放一起
new SpringPlugin("classpath:applicationContext.xml")
5.model生成
使用_JFinalDemoGenerator来生成model的代码,所有 sql 与业务逻辑写在 Service 中,不要修改自动生成的Model代码.
ex:1.9时代用jfinal-ext来生成代码,然后复制粘贴进去的方式跟不上时代了,能抛弃赶紧抛弃掉..
6.使用jetty插件启动
正常启动后如图示
一顿CURD操作后,Consumer端控制台日志输出
provider端配置了log4jdbc,控制台输出调用的sql
(ex:jfinal的默认输出sql是没有替换掉?占位符的,sql跟踪有点吃力,log4jdbc很好的补充了这点)
集群
JDK1.8下的dubbo-admin.2.5.4.war需要重新编译,已上传到git
一个消费者,多个提供者
项目链接