hengheng123456789
BlogJava
::
首页
::
联系
::
聚合
::
管理
297 Posts :: 68 Stories :: 144 Comments :: 0 Trackbacks
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(33)
给我留言
查看公开留言
查看私人留言
我参与的团队
随笔分类
(337)
Android(2)
CMMI-Common(5)
CMMI-PPQA(6)
JAVA-BI(6)
JAVA-Common(39)
JAVA-DB(7)
JAVA-Definition(4)
JAVA-Eclipse(25)
JAVA-IP(3)
JAVA-Server(2)
JAVA-Web(19)
Mobile-Common(1)
OS(2)
T型结构(53)
云(18)
人生谏言(17)
健康第一(2)
如是我闻(40)
市场学习(42)
法律学习(3)
礼仪学习(6)
管理学习(24)
英语学习(5)
谈判无处不在(6)
随笔档案
(296)
2011年5月 (1)
2011年4月 (4)
2011年2月 (2)
2011年1月 (9)
2010年12月 (9)
2010年9月 (6)
2010年8月 (39)
2008年2月 (8)
2008年1月 (42)
2007年12月 (15)
2007年10月 (6)
2007年9月 (44)
2007年6月 (9)
2007年5月 (8)
2007年4月 (6)
2007年3月 (33)
2007年2月 (12)
2007年1月 (11)
2006年12月 (5)
2006年11月 (7)
2006年10月 (3)
2006年9月 (2)
2006年8月 (15)
文章分类
(78)
BI(15)
Code Generation(2)
Design Pattern(9)
Eclipse(4)
EDI(1)
HSQL(1)
IP
JBOSS(2)
JMS(1)
JMX(10)
Linux(5)
QA(1)
SWT(16)
WorkFlow
XML(1)
其他(8)
应用参考(2)
文章档案
(68)
2007年9月 (1)
2007年3月 (10)
2007年2月 (1)
2006年12月 (9)
2006年11月 (21)
2006年10月 (5)
2006年9月 (7)
2006年8月 (14)
相册
TEMP
搜索
积分与排名
积分 - 428188
排名 - 130
最新评论
1. re: 6、模型Bean:Model Bean
好复杂呀。概念的东西,其实就是各种info,还有描述。
--袁良锭
2. re: 5、用Apache的commons-modeler来辅助开发JMX
楼主第一个类忘记去掉implements HelloMBean了。
--袁良锭
3. re: 4、动态MBean:DynamicMBean
最喜欢你这种的写博客了。简洁,demo代码又全。
--袁良锭
4. re: 3、Notification的使用
通过Notification发日志到主工作站。
Notification也可以通过网络发送?
--袁良锭
5. re: 2、JMX简介
很好的内容呀。简洁清晰。
--袁良锭
阅读排行榜
1. Hive 入门(转)(30047)
2. Linux中Eclipse的安装(10273)
3. 简便更改Eclipse的Title标题/标题图标/启动画面/帮助信息(8856)
4. 调试运行Eclipse插件遇到的问题:The editor class could not be instantiated.(8192)
5. JAAS 实例配置(6013)
评论排行榜
1. JAAS 实例配置(13)
2. 提高代码质量的Eclipse插件之CheckStyle(6)
3. 简便更改Eclipse的Title标题/标题图标/启动画面/帮助信息(6)
4. 如何更改Eclipse运行环境的Title标题(5)
5. Jboss之JMX实例:上传文件到Jboss目录中(4)
Liferay Portal 技术理解之 概述
Liferay
不再依赖于
EJB
,它完全可以单独装配到一个
servlet
容器(如:
Tomcat,JBoss
等)中。而所有的业务逻辑都通过
Spring
管理的
POJO
来实现。这样的实现利益于
Spring
的
AOP
各
IOC
特性。
但在
POJO
的实现方法上
Liferay
的两个版本有所不同,企业版(
enterprise
)中通过
EJB
从而为大站点提供了高扩展性各良好的事务支持能力(如集群),而专业版(
professiona
)直接通过轻量级的接口完成。
所有的业务数据都通过
Hibernate
来实现并通过
POJO
来调用。
Liferay
曾经使用
CMP
技术
.
来实现持久层,但后来因速度及灵活性等原因改用
Hibernate
。在数据库方面,
Liferay
也完全兼容大多数主流类型
DB
。
Liferay
使用
JAAS
来完成用户认证安全管理,好处是当一个用户登录后,它的安全属性可以在
Servlet
和
EJB
层中沿用,真正作到系统级的
SSO
。具体讲,远程
EJB
可以沿用安全检查及权限属性,本地的
EJB
是为其它
EJB
提供业务逻辑服务的,不能被远程调用所以也不必做此类检查;安全原则也派生到
POJO
实现中,而这此实现其实是远程
EJB
的基础类。
企业版式使用
EJB
,所以系统分别可以在
WEB
服务器、
EJB
服务器、数据库服务器三层中实现集群。当然在
n
层的系统中,集群也保持优势,而且在每一层都并不强迫使用集群,这些都为大企业应用提供了极好的弹性选择权。
系统中的
EJB
、
HBM
、以及模式
Model
者是
ant
执行
build-ejb
任务时,通过读取目录
/portal-ejb
下的
ejb.xml
文件,然后自动生成的。每个有持久层对象的门户单元(
portlet
)都有自己的
ejb.xml
文件(可以在
/portal-ejb
下搜索得到清单)。当需要生成持久层的类时,就把文件复制到
/portal-ejb
下,这生成工具是建立在
XDoclet
之上的。
例如:通过读取
Bookmarks
门户单元的
ejb.xml
文件配置后,自动生成下列的模式类。每个类对应数据库中的一个表。永远不要手工修改
BookmarksEntryModel
类,而要通过修改
BookmarksEntry
,然后再更新
BookmarksEntryModel
内容。这样做的好处是减少了直接写代码的工作,而只做相应的标记工作。
com.liferay.portlet.bookmarks.model.BookmarksEntry
com.liferay.portlet.bookmarks.model.BookmarksEntryModel
com.liferay.portlet.bookmarks.model.BookmarksFolder
com.liferay.portlet.bookmarks.model.BookmarksFolderModel
Hibernate
类是根据模式(
model
)类对应生成的。这样就可以在多层系统中允许模式类是可作序列化处理的,而
Hibernate
类则不必。
com.liferay.portlet.bookmarks.ejb.BookmarksEntryHBM
com.liferay.portlet.bookmarks.ejb.BookmarksFolderHBM
持久层的方法如:
add, update, delete, find, remove,
以及
count
,系统都默认自动生成。
com.liferay.portlet.bookmarks.ejb.BookmarksEntryPersistence
com.liferay.portlet.bookmarks.ejb.BookmarksFolderPersistence
也生成了专门的协助类(
Helper classes
),可以用来调用持久层方法。默认时,协助类调用
Hibernate
的方法来对数据库进行更新操作,但是也可以改写
portal.properties
中的配置,使用自己专用的类来完成,但这种类要求要继承默认的持久层类。换言之,用户完全可以定制自己的持久层数据,可以是一个正统的数据库,或者是
LDAP
服务器,其它什么的。
com.liferay.portlet.bookmarks.ejb.BookmarksEntryUtil
com.liferay.portlet.bookmarks.ejb.BookmarksFolderUtil
为了减少对象生成的成本,引入了对象池,可以通过修改
portal.properties
文件来控制池的基本动作。
com.liferay.portlet.bookmarks.ejb.BookmarksEntryPool
com.liferay.portlet.bookmarks.ejb.BookmarksFolderPool
用来实现业务逻辑的
POJ
O类,通过继承
PrincipalBean
类,来实现有关调用者的方法,所以可以远程调用。如:调用
getUserId()
可以得到当前用户的
ID
;调用
getUser()
则返回当前用户的对象。
EJB
再继承这类
POJO
,实现远程调用。
例如:下面的类实现了,允许当且公当
bookmark
项目或目录的生成者可以删除它。这些对象只有在不存在时才可能被创建。
协助类(
Helper classes
)是在
POJO
的实现基础上生成的。它可以节约开发者的工作,不必书写很多行的代码,而只要简单的找到合适的
EJB wrapper
或
POJO
实现,通过调用
BookmarksEntryManagerUtil.addEntry
来间接调用相应的
BookmarksEntryManagerImpl.addEntry
方法就可以了。
BookmarksEntryManagerUtil
通过调用
BookmarksFolderManagerFactory
来查找实现
BookmarksEntryManager
的类。也正是通过
BookmarksFolderManagerFactory
来识别
Spring
和
portal.properties
中的配置来决定要是载入
EJB wrapper
还是
POJO
实现。
com.liferay.portlet.bookmarks.ejb.BookmarksEntryManager
com.liferay.portlet.bookmarks.ejb.BookmarksEntryManagerEJB
com.liferay.portlet.bookmarks.ejb.BookmarksEntryManagerEJBImpl
com.liferay.portlet.bookmarks.ejb.BookmarksEntryManagerFactory
com.liferay.portlet.bookmarks.ejb.BookmarksEntryManagerHome
com.liferay.portlet.bookmarks.ejb.BookmarksEntryManagerUtil
com.liferay.portlet.bookmarks.ejb.BookmarksFolderManager
com.liferay.portlet.bookmarks.ejb.BookmarksFolderManagerEJB
com.liferay.portlet.bookmarks.ejb.BookmarksFolderManagerEJBImpl
com.liferay.portlet.bookmarks.ejb.BookmarksFolderManagerFactory
com.liferay.portlet.bookmarks.ejb.BookmarksFolderManagerHome
com.liferay.portlet.bookmarks.ejb.BookmarksFolderManagerUtil
隧道类(
Tunneling classes
)是用来实现通过
80
端口来调用
POJO
的。
com.liferay.portlet.bookmarks.ejb.BookmarksEntryManagerHttp
com.liferay.portlet.bookmarks.ejb.BookmarksFolderManagerHttp
Soap
类也是用来实现通过
80
端口来调用
POJO
的。虽然与隧道类相比
Soap
类在速度上要差一点,原因是隧道类使用二进制数据流。但
Soap
类用灵活,可以适用各种客户端(不局限于
Java
)。
com.liferay.portlet.bookmarks.ejb.BookmarksEntryManagerSoap
com.liferay.portlet.bookmarks.ejb.BookmarksFolderManagerSoap
Soap
类也是用来实现通过
80
端口来调用
POJO
的。虽然与隧道类相比
Soap
类在速度上要差一点,原因是隧道类使用二进制数据流。但
Soap
类用灵活,可以适用各种客户端(不局限于
Java
)。
这些类只有在检验到不存在时才会被创建。
同时协助类也生成了。
com.liferay.portlet.bookmarks.ejb.BookmarksEntryLocalManager
com.liferay.portlet.bookmarks.ejb.BookmarksEntryLocalManagerEJB
com.liferay.portlet.bookmarks.ejb.BookmarksEntryLocalManagerEJBImpl
com.liferay.portlet.bookmarks.ejb.BookmarksEntryLocalManagerFactory
com.liferay.portlet.bookmarks.ejb.BookmarksEntryLocalManagerHome
com.liferay.portlet.bookmarks.ejb.BookmarksEntryLocalManagerUtil
com.liferay.portlet.bookmarks.ejb.BookmarksFolderLocalManager
com.liferay.portlet.bookmarks.ejb.BookmarksFolderLocalManagerEJB
com.liferay.portlet.bookmarks.ejb.BookmarksFolderLocalManagerEJBImpl
com.liferay.portlet.bookmarks.ejb.BookmarksFolderLocalManagerFactory
com.liferay.portlet.bookmarks.ejb.BookmarksFolderLocalManagerHome
com.liferay.portlet.bookmarks.ejb.BookmarksFolderLocalManagerUtil
但总有一些用户需要调用引种当地类,于是完全相对应的远程类也应用而生了。
com.liferay.portlet.bookmarks.ejb.BookmarksEntryRemoteManager
com.liferay.portlet.bookmarks.ejb.BookmarksEntryRemoteManagerEJB
com.liferay.portlet.bookmarks.ejb.BookmarksEntryRemoteManagerEJBImpl
com.liferay.portlet.bookmarks.ejb.BookmarksEntryRemoteManagerFactory
com.liferay.portlet.bookmarks.ejb.BookmarksEntryRemoteManagerHome
com.liferay.portlet.bookmarks.ejb.BookmarksEntryRemoteManagerUtil
com.liferay.portlet.bookmarks.ejb.BookmarksFolderRemoteManager
com.liferay.portlet.bookmarks.ejb.BookmarksFolderRemoteManagerEJB
com.liferay.portlet.bookmarks.ejb.BookmarksFolderRemoteManagerEJBImpl
com.liferay.portlet.bookmarks.ejb.BookmarksFolderRemoteManagerFactory
com.liferay.portlet.bookmarks.ejb.BookmarksFolderRemoteManagerHome
com.liferay.portlet.bookmarks.ejb.BookmarksFolderRemoteManagerUtil
许多人避免使用
EJB
,因为它的重量级,需要大量的代码工作。
Liferay
的自动生成脚本可以使得,既不损失
EJB
的优点,而且还最小化重复的代码等工作,从而你可以在努力与结果之间找到一个良好的平衡点。
Spring
也给
Liferay
带来了更多的好处。开发者既可以利用专业版在一个
servlet
容器中测试
POJO
的实现,也可以通过企业版在应用服务器上装载要上线的产品。
posted on 2007-02-10 13:10
哼哼
阅读(1184)
评论(1)
编辑
收藏
所属分类:
JAVA-Web
Feedback
#
re: Liferay Portal 技术理解之 概述
2008-07-04 21:28
Beijing_M
Hi ,好消息和大家分享:
Liferay 大连的联系方式:
MSN: eonpeter@gmail.com
大家可以和peter联系,可以从他那得到足够帮助
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
Easy Ajax with Struts 2
Using Drools in Your Enterprise Java Application
Apache MINA 快速入门
MINA Beginning
Wicket Beginning
FLEX是什么及与FLASH的关系的介绍
Liferay Portal 之 jbpm 配置
Java Web services 开发之建立Web services(使用 Web Tools Project)
Java Web services 开发之WSDL (使用 Web Tools Project)
Java Web services 开发之概念
Copyright @ 哼哼
Powered by:
.Text
and
ASP.NET
Theme by:
.NET Monster