JFinal

登录 注册

JFinal3.0整合Dubbo


前言

     目前参与的项目是基于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了.

blob.png

2.multicast注册中心

blob.png

    也许是年久失修的关系,multicast注册中心配置后,provider端一直启动不能,

blob.png

    换成Zookeeper后,顺利启动,这里provider端与consumer端的注册中心都要替换掉.

3.Controller.getModel(class)问题

    重现了此问题:在Demo运行起来后,对Blog进行创建和修改操作时出现了“Html 500”的错误.


    文档中是使用TableInitKit 在consumer端手动对模型初始化, 考虑到每个model都要手动操作,选择了跟provider端一样启动的时候把模型绑定,问题解决.blob.png

上面这种做法是错误的!!,

参考文章后,修改如下

https://my.oschina.net/u/1175852/blog/404262

https://my.oschina.net/aixiaohua/blog/610516

1.在前人的基础上,完善了一下代码生成器,在生成model的时候,同时生成生成绑定model的方法.

blob.png

调用端在afterJFinalStart中调用model绑定方法即可

blob.png


Api的pom.xml中设置忽略掉两个_generator类,避免泄露一些关键信息


4.spring.xml存放路径

    从resources下加载,跟a_little_config.txt等文件放一起

new SpringPlugin("classpath:applicationContext.xml")


blob.png

5.model生成

    使用_JFinalDemoGenerator来生成model的代码,所有 sql 与业务逻辑写在 Service 中,不要修改自动生成的Model代码.

    ex:1.9时代用jfinal-ext来生成代码,然后复制粘贴进去的方式跟不上时代了,能抛弃赶紧抛弃掉..


6.使用jetty插件启动

正常启动后如图示    

blob.png

blob.png

一顿CURD操作后,Consumer端控制台日志输出

blob.png

provider端配置了log4jdbc,控制台输出调用的sql

blob.png

(ex:jfinal的默认输出sql是没有替换掉?占位符的,sql跟踪有点吃力,log4jdbc很好的补充了这点)

集群

    JDK1.8下的dubbo-admin.2.5.4.war需要重新编译,已上传到git

    一个消费者,多个提供者   blob.png

blob.png


项目链接

      git地址

      Mac下使用Idea通过Main启动项目


评论

  • 04-11 17:28
    这个分享极好,好多人问呢,非常感谢你的分享,先顶一波
  • 04-11 21:05
    厉害~
  • 04-13 09:13
    顶一波
  • 04-13 18:23
    经测试,管用,作者真是厉害。
  • 04-14 09:08
    我有个问题,提供者和消费者都调用同样的api,都得直连数据库,这样做的意义是什么?
  • 04-14 09:23
    @izaobao 搭Demo的时候没考虑到这点,这2天参与到实际开发中,发现消费者是没办法连上提供者的数据库的.所以还有待完善
  • 04-14 17:29
    @izaobao 已经改好了,可以在看看
  • 05-05 16:16
    厉害
  • 07-25 10:18
    项目使用eclipse的jetty插件启动,访问都没有问题,,,,但是,使用maven的tomcat:run或者jetty:run,启动都是正常的,但是服务调用的时候就会报错。求指导。。。。
  • 11-16 11:35
    先赞了,收藏起来着手试一波
  • 发送