阅读更多
ServiceFramework是一个敏捷、快速、富领域模型的Java MVC 框架,其设计理念是让用户真正能够用最简单的方式解决80%的问题。

该项目目前应用于作者公司内部的一个产品中,刚开源不久,便引起了开发者的广泛关注与讨论。为了使大家进一步了解该框架,我们专访了作者祝海林。

欢迎大家推荐更多开源项目给我们,支持中国的开源项目发展,如果您和您的团队希望展示创业理念和有趣之处,或者有朋友正在创造这样的价值,请联系我们,发站内短信给ITeye管理员或者发邮件到webmaster@iteye.com即可。

先来个自我介绍吧! Top

网名 WilliamZhu,微博@PrinceCharmingJ。Java程序员,4年开发经验,2010年懵懂来京。有过短暂几天Rails程序员生涯,颇为自豪。曾经为了创建一个音乐新模式的尝试而奋斗过,至今仍念念不忘。现专注于搜索和数据挖掘领域。平常的爱好就是向大牛们提问、聆听、学习。

ServiceFramework是什么? Top

ServiceFramework,一个敏捷、快速、其ORM 和 Controller等设计会 surprize 你的一个 Java MVC 框架,专为移动应用后端量身定做,适用于快速搭建一个后端服务(说的好像有点拗口,oh yeah~~~)

ServiceFramework三大亮点:

  • ORM 实现真正的充血模型,非常 ActiveRecord 化。   
  • 非常轻量,你完全看不到servlet api,因为压根就没有使用Servlet规范。应用本身是一个普通的Java程序,http监听只是其中的一个模块。
  • 便于测试。模型类和controller都可以当作普通的类来进行测试。

发起这个项目的初衷是什么? Top

项目的起源是我们要用Java写一个后台服务,提供Web API,但觉的Spring太重,后来我们用nutz开发,但仍然觉得nutz有很多限制,比如,我们对response status比较重视。客户端会根据不同状态码进行不同处理,nutz就显得支持有点弱了。最后我跟老板说,给我机会,我可以写个更轻量,更RESTFul的。于是便在老板的支持下有了ServiceFramework。目前该项目应用在我们的搜索产品中。

开发效率比肩Rails,如何体现?是如何实现的? Top

你可以 clone ServiceFramework一份下来试试。当然从文档也是能够直观看到的。待会我会举几个小例子。

另外之前我也发过一篇关于ServiceFramewok的资讯,不愿意看文档的同学也可以看看这篇简短的资讯。

为了充分说明开发的便捷性,我直接在这篇采访稿中做个例子。

建立一张表:

--标签表
CREATE TABLE `tag` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `tag_synonym_id` int(11) DEFAULT NULL,
  `weight` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

--标签组。一个标签可以属于多个标签组。一个标签组包含多个标签
CREATE TABLE `tag_group` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;


定义两个类:

public class Tag extends Model {
    @Validate
    private final static Map $name = map(
    presence, map("message", "{}字段不能为空"),
    uniqueness, map("message", "{}字段不能重复")
    );

    @ManyToMany
    private List<TagGroup> tag_groups = list();
}

public class TagGroup extends Model {
    @ManyToMany
    private List<Tag> tags = list();
}


Ok了,模型类建立完毕。

写一个controller:

public class TagController extends ApplicationController {
     
	 @BeforeFilter
     private final static Map $check_params = map(only, list("save"));
	 
     @At(path = "/blog", types = POST)
     public void save() {
         if(!Tag.save(params())){
			 render(HTTP_400,tag.validateResults);
		 }
         render(ok());
     }
	 
	 private void check_params(){
	   if(isEmpty(param("tag")))render(HTTP_400,"您至少需要传递一个name字段");
	 }
}


一个简单的例子就做完了。查询方面提供了Arel的查询形式。比如:

List<Order> orders = Order.where("status=:status",map("status",Order.Status.NEW)).joins("details").fetch(); 


ServiceFramewok实现重点有三个方面:

  • 简化ORM框架。在我看来,Rails 的ActiveRecord是ORM的最佳实践。ServiceFramework的ORM基本是照着它改的。
  • 重新设计Controller中的 filter(interceptor)。各种before filter、around filter 可以有效简化逻辑应用。而框架本身则努力简化filter的使用。
  • 规范化项目目录。目前大部分新的框架都是这么做到的。一开始就给你生成一个标准的项目目录结构。ServiceFramework则进一步简化了这个操作。

顺带提一下目前类似Rails的Java框架可能会用到的一些技术:

  • 字节码增强。比如javassist、cglib等。代表有PlayFramework。
  • AOP 通过对注解等的解析,生成相应的切面文件。不过这需要特定的编译器。代表有 Spring ROO。
  • 还有就是通过IDE生成根据模板生成一些文件。这个可操作性不强。

ServiceFramework 目前采用的是字节码增强的方式。应用启动时会自动增强模型类。

我也可以直接用Rails(或者基于JVM的jRuby、Grails),为何还要使用这个框架? Top

如果你想用Java,并且想获得类似Rails的敏捷开发效率,那么用ServiceFrameowrk。

转换语言需要考虑很多问题。比如Rails是多进程模型,而Java项目通常是单进程多线程的。并且Ruby VM 和 JVM 在性能、健壮性、监控、GC等各个
方面还是有差距的。至于JRuby、Grails等基于JVM上的语言,和原生Java的整合并不如想象中的那么完美。

对于一般的互联网应用,如果你能够采用脚本语言,建议优先考虑Ruby(CRuby),接着Groovy,然后JRuby。

和其他框架(如Play)相比,ServiceFramework有什么优势或独特之处? Top

应该说ServiceFramework得到Play的很多启发。Play是一个优秀的Java MVC框架。Play优于ServiceFramework的地方自然很多。

个人觉得ServiceFramework不同于Play的地方:

  • Play简单的引入JPA,当然提供了一些比较有意义的便利方法。而ServiceFramework完全简化了JPA,操作起来就和ActiveRecord差不多。
  • Play的Query Interface简单引入EBean,但是EBean完全是个静态语言的折中产物。
  • ServiceFramework对C层的Filter做过重新设计,非常好用。

为什么希望项目定位于移动互联网后端开发? Top

从名字看出,这是一个写后端服务的框架。高效、敏捷符合移动互联网对快速开发的要求。并且能够获得Java社区带来所有好处。

ServiceFramework并不适合企业开发,企业开发有点过于复杂,而且我也没有做过企业方面的开发。今后ServiceFramework 的roadmap 也是继续强化对移动互联网的开发支持。目前我在咨询一些做app后端的朋友,看如何简化他们的开发。

ServiceFramework的学习成本? Top

通常情况下,你只要把ServiceFramework页面的README看完就行了。

接着 `git clone  git://github.com/allwefantasy/ServiceFramework.git`,就可以添加controller、model,着手开发项目了。

基于什么开源协议?在项目中使用ServiceFramework应该注意哪些方面? Top

GPL 2.0开源协议

ServiceFramework为了一个具体需求而诞生的,所以并不是适合所有的项目。只针对特定领域的需求。比如移动互联网后端服务的开发就很适合使用ServiceFramework。

建议留意README中的一些提示。我这里重点提示几点,在目前这个版本下:

  • 不要在旧项目中使用
  • 要遵循约定
  • 目前还不能放到标准的web容器比如tomcat、weblogic等。
估计看到第三点很多人会嘀咕了。其实目前的设计可以极大的简化你的部署流程。git clone到服务器上,接着运行./run.sh 脚本即可。性能方面大可不必担心,不会低于tomcat、weblogic等容器。另外建议你留意一下run.sh中Xmx等虚拟机参数。

该项目未来的发展计划? Top

未来会根据使用情况来进行功能修补增强。下一步计划,我可以预见到的是:

  • 隔绝ServiceFramework本身的依赖。也就是你看不到框架本身对第三方jar的依赖
  • 为模型类提供更多的自生成方法
  • 开始填补之前的仿PHP函数库
  • 我会开始寻求合作者,共同开发

目前项目贡献者情况?其他开发者如何参与? Top

开源没多久。目前就我一个人维护。不过已经应用于公司内部的一个项目,所以大家不用担心使用性。当然如果真的要用,我建议先用在小项目中。

如果要参与的话,可以直接到 ServiceFramework Fork一份下来,然后请求 merge 就行。想重度参与的可以联系我 allwefantasy@gmail.com
  • 大小: 56.1 KB


评论 共 51 条
51 楼 Godlikeme 2013-02-13 14:38
nathanleewei 写道
"ServcieFramework"
"ServiceFramework"?!

这算haha point么?
50 楼 sunnymoon 2012-12-05 09:05
mainlove 写道
allwefantasy 写道
mainlove 写道
你们真是的 与其在java框架上 搞那么多功夫
还不如从语言级去解决问题
这种类似的框架javaeye已经看到过5次以上了

都去看看scala吧,或者类似的jvm的语言,时代变了


语言没法解决。其实Java语言有非常多的优势,不能光从语法来看。虽然语法的改进也是有必要的。



真的发现java社区在 “Java语言”这个层面耗费了太多的精力,各种分发框架,各种orm,连个处理视图的都有一堆实现, 随着ROR的流行, java社区也开始了各种模仿,比如play roo 之类的,但是由于java语言的本身弱点,这些模仿出来的框架只是治标不治本。

“java平台”最大的优势的还是jvm那套规范,我还是觉得与其继续在java语言框架上做敏捷开发, 转战 基于jvm的动态语言,才是一个更好的选择, 仍旧是在jvm平台上,各种java语言第三方库,各种基于jvm的规范,完全都可以使用,风险非常小。

仅仅在语言层上做了切换,play现在已经开发推荐用scala开发了,spring的groovy虽然没有scala那样革新,但学习起来容易, 但总体感觉在国内,这块还是完全没有被重视。

我现在看到越来越多的人在写这种敏捷的框架,真心希望大家转换下思路。






jvm和java不是同一个层次的问题,不同意你的看法。动态语言有动态语言的优势,强类型语言有强类型语言的优势。
49 楼 mainlove 2012-11-02 09:07
allwefantasy 写道
mainlove 写道
你们真是的 与其在java框架上 搞那么多功夫
还不如从语言级去解决问题
这种类似的框架javaeye已经看到过5次以上了

都去看看scala吧,或者类似的jvm的语言,时代变了


语言没法解决。其实Java语言有非常多的优势,不能光从语法来看。虽然语法的改进也是有必要的。



真的发现java社区在 “Java语言”这个层面耗费了太多的精力,各种分发框架,各种orm,连个处理视图的都有一堆实现, 随着ROR的流行, java社区也开始了各种模仿,比如play roo 之类的,但是由于java语言的本身弱点,这些模仿出来的框架只是治标不治本。

“java平台”最大的优势的还是jvm那套规范,我还是觉得与其继续在java语言框架上做敏捷开发, 转战 基于jvm的动态语言,才是一个更好的选择, 仍旧是在jvm平台上,各种java语言第三方库,各种基于jvm的规范,完全都可以使用,风险非常小。

仅仅在语言层上做了切换,play现在已经开发推荐用scala开发了,spring的groovy虽然没有scala那样革新,但学习起来容易, 但总体感觉在国内,这块还是完全没有被重视。

我现在看到越来越多的人在写这种敏捷的框架,真心希望大家转换下思路。



48 楼 allwefantasy 2012-11-01 14:12
mainlove 写道
你们真是的 与其在java框架上 搞那么多功夫
还不如从语言级去解决问题
这种类似的框架javaeye已经看到过5次以上了

都去看看scala吧,或者类似的jvm的语言,时代变了


语言没法解决。其实Java语言有非常多的优势,不能光从语法来看。虽然语法的改进也是有必要的。
47 楼 allwefantasy 2012-11-01 14:11
billyw 写道
1、问题并没有被简化,而是被隐藏了
2、随着项目的深入,事情不可能还像看上去那么简单
3、需要大众化


说的非常好哇...  隐藏了复杂性,如此而已。内部说白了还是用的hibernate;
如果项目复杂度很高,估计会有很多问题,但是其实有很多项目都挺简单的。
复杂的话遇到问题可以慢慢改进的嘛。struts,spring啥不也是改了n多年,对吧。

大众化,不是很明白啥意思,目前ServiceFramework中ORM [url][https://github.com/allwefantasy/active_orm/url] 已经单独成一个项目了.大家可以集成进其他框架。
46 楼 mainlove 2012-10-27 17:16
你们真是的 与其在java框架上 搞那么多功夫
还不如从语言级去解决问题
这种类似的框架javaeye已经看到过5次以上了

都去看看scala吧,或者类似的jvm的语言,时代变了

45 楼 billyw 2012-10-24 09:20
1、问题并没有被简化,而是被隐藏了
2、随着项目的深入,事情不可能还像看上去那么简单
3、需要大众化
44 楼 jiyou1122 2012-10-11 15:56
坐等踩雷,国际框架在x.2之前不敢用,国产的,至少要2.x后吧
43 楼 yanlei 2012-10-10 15:22
CSDN的人robbin的得力干将
42 楼 nathanleewei 2012-09-30 22:56
"ServcieFramework"
"ServiceFramework"?!
41 楼 allwefantasy 2012-09-25 20:31
zj850324 写道
diggywang 写道
任何项目的开发进度都是10%左右的问题占用90%的时间。

对啊,占开发时间的不是代码量大。

那10%很难有框架能够简化的,因为是一些特定需求。所以框架应该关心的是如何解决你90%的常规需求。让他们真正的简化。
40 楼 nmtlsww 2012-09-23 16:52
原来这哥们是CSDN的啊
39 楼 南飞雁 2012-09-19 17:06
厉害,呵呵
38 楼 sunnymoon 2012-09-17 18:12
你这个不够轻,详见rose
37 楼 zj850324 2012-09-17 11:57
diggywang 写道
任何项目的开发进度都是10%左右的问题占用90%的时间。

对啊,占开发时间的不是代码量大。
36 楼 raoshoujian 2012-09-13 11:06
看了下大概,表示支持。自己在做android,有了这个应该会不错。
35 楼 httpclient_bd 2012-09-12 18:28
你的需求, 既然觉得spring太重,为什么不用py来写呢?
34 楼 nicegege 2012-09-12 17:45
ServcieFramework并不适合企业开发,企业开发有点过于复杂,而且我也没有做过企业方面的开发。今后ServiceFramework 的roadmap 也是继续强化对移动互联网的开发支持。目前我在咨询一些做app后端的朋友,看如何简化他们的开发。
-做企业开发的表示压力很大 飘过...
33 楼 thinkx 2012-09-12 17:02
allwefantasy 写道
thinkx 写道

我正在写的东西里面不使用ORM,只提供JDBC的thin wrapper,提供shard,数据库读写分离等功能,我觉得这些东西更有用一点。
总之我的口味就是快速,轻量,透明,做web层就是直接和http打交道,做数据库就是直接和sql打交道,不需要像ORM太厚的隔离层。


我的思路是,框架就是要让我代码写的爽。可以省略的东西就要给我省略,可以简化的东西就给我简化,一行代码能够解决的,就不能让我用两行。
历史的演变应该是:
原生的sql --> thin wrapper -->  ORM. 因为你觉得这个可以封装,那样更面向对象,于是就有了orm. thin wrapper就以为着大量的重复代码,因为封装的不够高层,写着写着总有人受不了,又会对你的额thin wrapper 再thin wrapper 一层。于是慢慢就厚了。

关于http层(controller),我认为servlet 这个api 设计的比较早,如果纯互联网应用,其实是可以不用她的。http 只是做协议解析,框架应该提供最简单的封装。RESTFul其实就是返回到了http 的原生状态。ServiceFramework对这个就做了比较努力的支持。比如对http response status登比较重视。

我对ORM的反感是因为它的不透明性,我需要见到SQL本身,我不在意它是直接嵌在代码里,或是从模板加载起来,我能看到并修改它是最重要的;另外就是可控性,比如可以直接控制事务的开启和关闭点,而不是整个controller action级的事务;Model和mapper自己手工写一下其实不麻烦,毕竟只有一次,最多配合注解和反射便利点;另外的例子还有缓存,我也不喜欢让ORM来过多干预。
至于controller部分,render部分倾向于template机制,对jsp兴趣不大;而对于做API来说json和xml的自动生成最重要,jsonp支持,batch run机制也需要支持一下。话说我对rest还是很爱的。
32 楼 guxichang 2012-09-12 16:56
快餐垃圾。。
31 楼 allwefantasy 2012-09-12 16:00
thinkx 写道

我正在写的东西里面不使用ORM,只提供JDBC的thin wrapper,提供shard,数据库读写分离等功能,我觉得这些东西更有用一点。
总之我的口味就是快速,轻量,透明,做web层就是直接和http打交道,做数据库就是直接和sql打交道,不需要像ORM太厚的隔离层。


我的思路是,框架就是要让我代码写的爽。可以省略的东西就要给我省略,可以简化的东西就给我简化,一行代码能够解决的,就不能让我用两行。
历史的演变应该是:
原生的sql --> thin wrapper -->  ORM. 因为你觉得这个可以封装,那样更面向对象,于是就有了orm. thin wrapper就以为着大量的重复代码,因为封装的不够高层,写着写着总有人受不了,又会对你的额thin wrapper 再thin wrapper 一层。于是慢慢就厚了。

关于http层(controller),我认为servlet 这个api 设计的比较早,如果纯互联网应用,其实是可以不用她的。http 只是做协议解析,框架应该提供最简单的封装。RESTFul其实就是返回到了http 的原生状态。ServiceFramework对这个就做了比较努力的支持。比如对http response status登比较重视。
30 楼 thinkx 2012-09-12 14:48
allwefantasy 写道
lwclover 写道
thinkx 写道
我也考虑做这个。。因为我也是开发server API的,不过不喜欢ORM。

我也不喜欢orm,大互联网公司,也不用orm

就sql 查询而言,和ORM没有关系。ServiceFramework就是把sql语句做了形式化的封装,比如 
Tag.where('status=1').join('tag_groups').limit(10).fetch()

这种形式。最后返回的结果为Tag集合对象。应该说是简化了代码的。并且where这种方式是可以定义在类里面的。比如

class Order extends Model  
  {  
     public static JPQL status_1_and_join_group(){  
       return where("status=1").join('tag_groups');  
     }  
  }  


上面的查询语句就可以变成:
```
List<Tag> tags = Tag.status_1_and_join_group().limit(10).fetch()
```
灵活利用,可以简化很多操作的。所以你可以看做对sql语句的简化。
这在AR里叫做named_scope,很受欢迎


我正在写的东西里面不使用ORM,只提供JDBC的thin wrapper,提供shard,数据库读写分离等功能,我觉得这些东西更有用一点。
总之我的口味就是快速,轻量,透明,做web层就是直接和http打交道,做数据库就是直接和sql打交道,不需要像ORM太厚的隔离层。
29 楼 allwefantasy 2012-09-12 13:29
lwclover 写道
thinkx 写道
我也考虑做这个。。因为我也是开发server API的,不过不喜欢ORM。

我也不喜欢orm,大互联网公司,也不用orm

就sql 查询而言,和ORM没有关系。ServiceFramework就是把sql语句做了形式化的封装,比如 
Tag.where('status=1').join('tag_groups').limit(10).fetch()

这种形式。最后返回的结果为Tag集合对象。应该说是简化了代码的。并且where这种方式是可以定义在类里面的。比如

class Order extends Model  
  {  
     public static JPQL status_1_and_join_group(){  
       return where("status=1").join('tag_groups');  
     }  
  }  


上面的查询语句就可以变成:
```
List<Tag> tags = Tag.status_1_and_join_group().limit(10).fetch()
```
灵活利用,可以简化很多操作的。所以你可以看做对sql语句的简化。
这在AR里叫做named_scope,很受欢迎
28 楼 lwclover 2012-09-12 12:49
thinkx 写道
我也考虑做这个。。因为我也是开发server API的,不过不喜欢ORM。

我也不喜欢orm,大互联网公司,也不用orm
27 楼 lwclover 2012-09-12 12:43
just so so这类框架很多,楼主这个高效,从哪里可以看出?
26 楼 allwefantasy 2012-09-12 09:43
jeremy_huang 写道
感觉这仅是一个orm的组件吧。希望作者能将框架的一些设计文档分享一下,毕竟这篇文章仅是在讲她如何点好,

有一个使用文档:
read me
25 楼 jeremy_huang 2012-09-12 08:35
感觉这仅是一个orm的组件吧。希望作者能将框架的一些设计文档分享一下,毕竟这篇文章仅是在讲她如何点好,
24 楼 allwefantasy 2012-09-11 19:48
浮生过半 写道
启动一堆错。。这找不到那找不到。。

推荐将错误贴在gist里面,然后报issues 或者 直接发到我邮箱。
通常是能跑起来的。但依然没法测试到所有的情况。请见谅哦
23 楼 浮生过半 2012-09-11 19:18
启动一堆错。。这找不到那找不到。。
22 楼 浮生过半 2012-09-11 18:27
要是能早点发布就好了。。刚刚垒完一个APP的后端..找机会尝试一下

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • liferay-dev-setup-vagrant

    设置/供应包括安装Liferay Portal服务器及其先决条件: 一个MySQL数据库一个Java 7 JDK Liferay 6.2 Tomcat 包。先决条件启动和配置 VM 需要安装以下软件包: (仅适用于带有 Vagrant 的开发环境) 请注意,(某些...

  • liferay 7利用serviceBuilder来访问外部数据库

    建一个serviceBuilder的module 修改service.xml,修改结束后buildservice。...DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 7.1.0//EN" "http://www.liferay.com/dtd/life...

  • liferay中数据库表的解析未完

    取值范围(portlet,Embedded,Artical,url,link to page),如果将type_设置为Embedded或者url就可以将其他系统在liferay portal中显示出来 字段 typeSetting 表示该页面的layout采用哪个模板,例如一栏或者二栏...

  • liferay配置数据库(tomcat6-portal5.2.3)

    最近学习liferay,配置运行起来后用了一段时间,但是都是在其默认的HSQL数据库上运行的,忽然想换一下数据库,如MYSQL。但是上网找了很多资料基本上都是障齑介绍的,可是按照介绍配了很多次都不成功,启动过程...

  • 关于LIFERAY源码及数据库文件下载的地址.

    关于LIFERAY源码及数据库文件下载的地址. liferay 的资料手中有很多,也有很多在开发中遇到的问题,最近一段时间,我会把我总结,统统传上来的.期待大家的访问,并留下宝贵的意见,大家共同学习,共同进步! 谢谢 在论坛中...

  • Liferay7开发系列(一)介绍 liferay版本:7.1.2

    Liferay portal介绍 它提供了一个强大的平台,可以快速构建您的网站,并为所有客户(无论是台式机、移动设备或两者之间的任何设备)提供服务;它提供了您在网站上运行所需的所有标准应用程序;它为新应用程序或定制...

  • liferay 7.0开发到部署

    文章目录一、开发环境搭建1、下载插件2、创建Liferay Project3、创建之后的项目列表二、初始化liferay服务三、配置Liferay服务四、创建module五、自定义module六、部署module七、启动服务测试 一、开发环境搭建 软件...

  • Liferay教程– Liferay门户Portlet教程

    Welcome to Liferay Tutorial. Liferary is a JSR 286 complaint leading Portlet container. You can use liferay portlet for creating an enterprise, standard and scalable Web Application. 欢迎使用Liferay...

  • Liferay 6开发学习(二十六):数据库连接相关问题

    Liferay中怎么更换数据库? 常碰到有人问Liferay怎么更换数据库,怎么修改数据库连接。在我们第一次启动Liferay的时候,会有一个配置向导,在此配置向导我们可以选择数据库,并配置数据库连接信息。如果我现在在...

  • Liferay Portal 7.4 GA3 and Liferay Commerce 4.0 GA3 Release

    Liferay正式发布Liferay Portal 7.4GA3,以及Liferay Commerce4.0GA3 如何下载 Liferay Portal和Liferay Commerce分享同一个Bundle和Docker镜像。请选择以下最适合您的下载路径和环境。 1.Docker镜像 您可以用下面的...

  • Liferay使用管理中的一些常见问题

    在Liferay的管理中,有时候我们需要手动的去修改数据库里面的信息,但是修改完成之后,发现在Portlet中的数据并没有改变,这是因为数据库缓存的原因,Liferay默认情况下的取数据是从缓存中取的,不是直接从数据库中...

  • Liferay Portal 连接配置MySQL数据库 (三)

    Liferay Portal 连接MySQL数据库

  • liferay mysql driver_liferay与mysql的联接

    liferay与mysql的连接本文的前提是已经搭建好liferay的开发环境,没建好的可以参照我以前发的那篇文章由于个人对mysql不是很熟悉,所以我的数据库操作都是使用SQLyog Enterprise进行数据库操作的。首先在mysql中建立...

  • Liferay7开发文档_1.1基础知识

    Liferay开发人员应了解哪些基础知识?1 开源,强调遵循标准规范,而不是重新发明轮子。2 基于JavaEE,大量利用OSGi和Java平台的其他流行技术。3 基于模块化的体系结构,并为项目提供模块化的开发范例。4 可构建web...

  • Liferay 6.1开发学习(十八):Liferay开发过程中的一些常见问题

    记录一些个人在Liferay的开发中遇到的一些常见问题与处理技巧,持续更新ing Build namespace xx build number xxx which is newer than xx 此错误常出现在部署工程的时候,错误的意思是说当前工程的build ...

  • liferay实战

    10、数据库里修改的在页面上没生效处理: 控制面板-&gt;服务器管理-&gt;清除数据库缓存 11、控制面板-&gt;组件里面可关闭不需要的portlet 12、查看liferay模块的版本 13、jsp的一些定制扩展 (1)、页面上找找相应的class或id...

  • 如何让tomcat bundle liferay使用不同的数据库

    如果要使用不同的数据库,需要做好以下准备。... 下载liferay的数据库脚本 (http://prdownloads.sourceforge.net/lportal/liferay-portal-sql-4.1.3.zip?download)将压缩文件解压后会看到三个主要的目录:create,porta

  • 学习liferay必看的好文章!

    转载自From Elias的个人主页1. 文档说明2. 基本环境配置2.1 准备必须的软件,并... 基于Tomcat开发Portlet3.1 配置扩展开发环境3.2 添加插件支持3.3 配置数据库和执行Liferay3.4 完成一个最简单的JSP的Portle

  • Liferay开发过程中的一些常见问题

    此文章原地址为:...记录一些个人在Liferay的开发中遇到的一些常见问题与处理技巧,持续更新ing Build namespace xx b

  • 天然气汽车供气系统减压装置毕业设计(cad+设计方案).zip

    天然气汽车供气系统减压装置毕业设计(cad+设计方案)

Global site tag (gtag.js) - Google Analytics