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启动项目


评论区

JFinal

2017-04-11 17:28

这个分享极好,好多人问呢,非常感谢你的分享,先顶一波

Dreamlu

2017-04-11 21:05

厉害~

小徐同学

2017-04-13 09:13

顶一波

izaobao

2017-04-13 18:23

经测试,管用,作者真是厉害。

izaobao

2017-04-14 09:08

我有个问题,提供者和消费者都调用同样的api,都得直连数据库,这样做的意义是什么?

l745230

2017-04-14 09:23

@izaobao 搭Demo的时候没考虑到这点,这2天参与到实际开发中,发现消费者是没办法连上提供者的数据库的.所以还有待完善

l745230

2017-04-14 17:29

@izaobao 已经改好了,可以在看看

jf大哥大

2017-05-05 16:16

厉害

袁小猴

2017-07-25 10:18

项目使用eclipse的jetty插件启动,访问都没有问题,,,,但是,使用maven的tomcat:run或者jetty:run,启动都是正常的,但是服务调用的时候就会报错。求指导。。。。

阿帕奇

2017-11-16 11:35

先赞了,收藏起来着手试一波

阿帕奇

2017-11-22 17:48

@JFinal 能不能提供3.0整合dubbo的教程啊?

阿帕奇

2017-12-21 10:06

非常感谢,根据糊搞大神的:https://www.oschina.net/code/snippet_1175852_47421
我把jfinal3.3+dubbo2.5.8成功了;

阿帕奇

2017-12-21 10:07

spring插件的代码:https://gitee.com/jfinal/jfinal/tree/jfinal-1.9/src/com/jfinal/plugin/spring

sany

2018-03-17 12:00

怎么处理事务的控制呢??

sany

2018-03-17 12:10

怎么处理事务的控制呢??

映玥无痕

2018-11-05 10:31

为什么我共用3个tomcat启动 , 服务端在Dubbo Admin看到,消费者就看没看见。

241

2019-01-24 14:32

@l745230
你好,请问按照你的说法,消费端注册不进去啊。在线等谢谢

241

2019-01-24 14:33

@映玥无痕
你解决消费端,看不见的问题了吗,我遇到一样的问题

对呀

2019-02-21 10:40

我连接sqlserver,就报错 Caused by: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver ,项目中是有这个依赖的,不知道怎么办了

对呀

2019-02-21 10:41

_JFinalDemoGenerator 连接sqlserver

cs3230524

2019-12-08 13:54

@sany 怎么处理事务控制呢

热门分享

扫码入社