weblogic主题.docx
- 文档编号:4170784
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:21
- 大小:31.38KB
weblogic主题.docx
《weblogic主题.docx》由会员分享,可在线阅读,更多相关《weblogic主题.docx(21页珍藏版)》请在冰点文库上搜索。
weblogic主题
作者:
林海滨(dev2devID:
linhibin)
摘要
本文着重于从理论与应用的角度,对BeaWebLogicPortal8.1做一个介绍和分析,详细介绍JSR168标准,并对Portal基本原理及经常碰到的问题进行讨论。
Portal简介...
什么是Portal?
.
什么是Portlet?
.
Portal标准...
Portlets与Servlet的异同?
...
相同点...
不同点...
portlet优点...
portlet与servlet的关系...
portlet无法做到的事情...
Portlets实例...
Portlet生命周期...
PortletURLs.
如何生成PortletURL.
如何使用PortletURL.
portlet模式...
VIEW模式...
EDIT模式...
HELP模式...
portlet窗口状态...
portlet上下文...
PortletRequest
PortletResponse.
Portlet参数...
会话PortletSession.
变量范围定义...
PortletSession与HttpSession的关系...
缓存Cache.
Portlet应用...
标记库...
.
.
.
.
定制的Portlet模式...
不允许的标记...
WebLogicPortal
基础概念--配置篇...
Desktop.
Book.
Page.
基础概念--开发篇...
UserPorfilePropertySet
UserSegment
ContentSelector
Campaign.
PlaceHolder
目录结构...
开发步骤...
杂项...
WebLogicPortal原理及应用...
生命周期...
参数传递...
JSR168标准...
WebLogicPortal8.1用法...
Cache机制...
用户认证...
输出机制...
WebLogicPortal设计模式...
Singleton模式...
Factory模式...
Visitor模式...
Facade模式:
State模式:
Observer模式...
AbstractFactory模式...
WebLogicPortal集成...
远程Portlet
集成OA.
单点登录SSO..
Portal简介
什么是Portal?
Portal是一个基于web的应用程序,它主要提供个性化、单点登录、不同来源的内容整合以及存放信息系统的表示层。
什么是Portlet?
Portlet是基于java技术的web组件,它由portlet容器管理、并处理请求,并动态生成输出内容。
Portlet的输出是一个片段,即不是一个完整的页面。
Portal标准
为规范Portal,SUN于2003年底制定了JSR168,它定义了portlet标准,并给出了一个实现接口。
Portlets与Servlet的异同?
相同点
基于web应用的java技术
由特定的容器管理
动态生成内容
生命周期由容器进行管理
通过request/reponse进行交互
不同点
portlet只生成片段
portlet并不直接绑定到某一个URL上
portlet通过portal进行交互
portlet可以多次在同一个portal页面上同时出现
portlet优点
能访问到用户配置信息
能在不同的域中存储会话:
应用程序级到私有级。
portlet与servlet的关系
前者能调用后者,并且能共享信息,包括:
Attributes
portlet容器是servlet容器的扩展
portlet无法做到的事情
设置response的字符集编码
设置httpheader
获取客户端的request
Portlets实例
如果是在普通的场合下使用,即不是在分布式场合,则每个portal应用就会生成一个portlet实例。
而如果是在分布式场合下使用的话,则每个jvm只有一个实例。
Portlet生命周期
Portlet接口的四个方法构成一个完整的生命周期:
init,processAction,render,destroy
publicvoidinit(PortletConfigconfig)throwsPortletException;
由portlet容器调用,在将portlet放入服务区前调用。
portlet容器在初始化portlet后,直接调用这个方法。
publicvoidprocessAction(ActionRequestrequest,ActionResponseresponse)
throwsPortletException,java.io.IOException;
由portlet容器调用,用来处理actionrequest。
publicvoidrender(RenderRequestrequest,RenderResponseresponse)
throwsPortletException,java.io.IOException;
由portlet容器调用,用来生成输出。
publicvoiddestroy();
将portlet从服务区中删除。
PortletURLs
如何生成PortletURL
RenderResponse.createActionURL
RenderResponse.createRenderURL
调用setParameter、setParameters可以用来设置参数.
如何使用PortletURL
开发者不可以对参数进行任何编码,它(编码)是由portlet容器进行的。
见下面例子:
PortletURLurl=response.createRenderURL();
url.setParameter(“customer”,””);
url.setParameter(“show”,”summary”);
writer.print(“Summary”);
portletURL可以包含portlet的模式及窗口的状态,见下面例子:
PortletURLurl=response.createActionURL();
url.setParameter(“paymentMethod”,”creditCardInProfile”);
url.setWindowState(WindowState.MAXIMIZED);
writer.print(“
窗体顶端
”);
setSecure方法用来设置是否是https。
portlet模式
portlet模式用来指示portlet应执行的功能,标准定义了三种:
VIEW,EDIT,HELP。
VIEW模式
用来生成当前portlet状态的标签内容,可能包含一个或多个screen。
开发者必须重载GenericPortlet.doView()方法。
此模式是所有的portlet都必须实现的。
EDIT模式
用来编辑portlet模式。
必须重载GenericPortlet.doEdit()方法。
此模式并不要求实现。
HELP模式
提供有关portlet的信息。
重载GenericPortlet.doHelp()方法。
此模式并不要求实现。
此外,还可以创建自定义的模式。
定制的portlet必须重载GenericPortlet.doDispatch()方法
在描述文件中指明所支持的模式,元素是,见下例子:
text/html
edit
help
portlet窗口状态
窗口状态可以用来指示当前页面的有效空间,portlet可以根据窗口状态来进行不同的输出。
内置状态分为三种:
NORMAL、MAXIMIZED、MINIMIZED,此外还可以自定义状态。
portlet上下文
由PortletContext实现,必须与ServletContext一致。
主要方法:
getPortalInfo、getProperty、getPropertyNames、getSupportedPortletModes、getSupportedWindowStates
PortletRequest
PortletRequest有两个子类:
ActionRequest
RenderRequest
主要方法:
getParameter返回指定名称参数的第一个值
getParameterNames返回指定名称参数数组名称
getParameterValues返回指定名称参数的值数组
getParameterMap
portlet容器不会将request的参数传播到外面,除非portlet在processAction中,调用了ActionRequest.setRenderParameter。
不同portlet之间的request是不可见的。
Attributes可以与JSP及Servlet共享,它用来在普通API无法应用的场合。
Properties由portlet容器指定,用来获取http的某些特性,包括:
content-length,content-type,accept-language等等。
前缀为“javax.portlet.”的属性及参数是保留名称。
PortletRequest的生命周期
仅在processAction方法或render调用期间。
PortletResponse
PortletResponse有两个子类:
ActionResponse
RenderResponse
PortletResponse的主要方法:
setProperty
addProperty
encodeURL
sendRedirect
ActionResponse接口
允许重定向、设置参数、改变窗口状态及模式。
setRenderParameter
RenderResponse接口
允许设置标题、内容。
setContentType
getPortletOutputStream
getWriter
生命周期:
在processAction方法或render调用期间。
Portlet参数
Portlet通过参数来获取各种属性,接口是:
PortletPreferences
Portlet只能在processAction调用的时候修改参数。
本地化参数
根据ResourceBundle类进行实现。
命名规则:
’javax.portlet.preference.description.
验证:
实现:
PreferencesValidator,并且必须以线程安全的模式实现,它在JVM中必须是单子的。
当有验证器与参数关联时,PortletPreferences.store()必须调用验证器的validate()方法。
参数的修改必须是原子性。
会话PortletSession
变量范围定义
一是应用程序级别APPLICATION_SCOPE,
二是Portlet级别PORTLET_SCOPE。
APPLICATION_SCOPE必须采用前缀表示法来进行属性的存取。
当使用PortletSessionUtil类进行属性的访问时,对PORTLET_SCOPE的变量不用采取前缀,建议用取这种方法。
PortletSession与HttpSession的关系
在PortletSession与HttpSession中的属性必须是互相可见的。
PORTLET_SCOPE属性必须加上前缀,两种session必须一致。
APPLICATION_SCOPE的属性名称必须是一致的。
“javax.portlet.”前缀的属性名称是保留的,开发者不能使用。
缓存Cache
超时缓存,不要求实现。
300
使用RenderResponse设置属性可以改变缓存EXPIRATION_CACHE,如果设置为0则不使用缓存,设置为-1则缓存永不过时。
在描述文件中没有定义,但程序中设置了的话,会被忽略。
Portlet应用
Portlet应用是一个web应用,并且可以用于不同的portlet容器中。
Portlet应用与web应用的关系:
由servlet容器管理所有的组件、资料(除portlet外)。
Portlet应用与PortletContext的关系:
由容器实现一对一。
目录结果:
/WEB-INF/portlet.xml
/WEB-INF/classes
/WEB-INF/lib
ClassLoader:
与servlet同样。
标记库
defineObjects定义了以下几个变量:
RenderRequest
RenderResponse
PortletConfig
actionURL用来创建URL,定义了以下几个变量:
StringwindowState
StringportletMode
Stringvar
Stringsecure
20
namespace定义了当前portlet的一个唯一值,用于输出时确保名称的唯一性,例如javascript函数名。
param用来加入到URL中,必须在actionURL的内部定义。
例如:
”myParam”value=”someValue”/>
定制的Portlet模式
about,config,edit_defaults,priview,print
不允许的标记
基于HTML:
base,body,iframe,frame,frameset,head,html,title。
基于XHTML:
base,body,iframe,head,html,title。
不太兼容的标记:
link,meta,style。
Portlet标准虽不复杂,但其在整个portal应用中不过是冰山一角。
实际上,实现一个portal是一个非常庞大的工程,它几乎等同于一个IDE的开发,BeaWebLogic在这方面可以说是业界的先锋,其IDE环境workshop,已完全集成了Portal的开发,达到了可视化目的,这也是下一节所要详述的。
WebLogicPortal
其实BeaWebLogicPortal7.0就已是一个十分成熟的门户框架,Portal8.1更是一个出色的产品,它与workshop开发环境的无缝集成,使开发者的解决方案速度大大地加快,从某种意义上来说,只要会配置portal,可以不用写一行代码就可以实现一个门户应用。
那么就让我们来看看如何配置Weblogic。
首先来看看Portal的基本概念:
基础概念--配置篇
Desktop
Portal桌面,每个portal可以具有多个桌面。
一个桌面可以具有多个书册
Book
书册,等同于传统软件界面的tab,是由desktop包容的。
书册是可以嵌套的,即一个书册中可以再嵌入另一个书册
一个书册可以包含多个页面。
Page
页面,每个book可以包含多个页面。
一个页面可以包含多个portlet。
基础概念--开发篇
UserPorfilePropertySet
用户配置属性集,用来存储用户信息。
UserSegment
用户分段,用来分用户划分等级,应用程序可以根据等级进行不同的逻辑处理,例如可以实现网上购物的用户等级划分
ContentSelector
内容选择符
Campaign
活动,用来定义门户事件逻辑处理。
PlaceHolder
占位符,是web网页上的一个表示空间,可以存放文字、图片或shockware等信息。
目录结构
compaigns
framework
markup
layout:
布局,用来安排网页的表现形式
lookandfeel:
外观
menu:
菜单
shell:
外壳
theme:
主题
skeletons骨架,此目录一般包括种jsp资源,包括header.jsp/footer.jsp等。
skins,外观,即网页的表现形式
portlets存放portlets的目录
visitorTools用户访问工具,利用此工具可以定义portal的外观、布局。
导航菜单
MultiLevelMenu多层菜单,即类似于windows菜单系统。
SingleLevleMenu单层菜单
作用域
desktop:
:
lookandfee:
:
shell:
:
book:
:
page:
:
portlet
开发步骤
1. 使用configurationwizard建立一个portaldomain。
2. 新建一个portalapplication。
3. 在应用中新建一个portalproject。
4. 在项目中新一个portal。
5. 在项目中新建一个portlet
6. 在portal中,插入新建的portlet
杂项
Portal8.1还具有如下特性:
实现了jsr168标准。
支持用户自定义桌面、外观。
你可以在如下路径中找到相关标准接口:
%weblogic81%portallibetuixsystemextsystemportlet.jar。
portlet包含器的位置是:
%weblogic81%portallibetuixwebportlet-container.jar
此外,对于WebLogicPortal,最重要的包莫过于:
%weblogic81%portallibetuixsystemetuix_system.jar
WebLogicPortal原理及应用
生命周期
WebLogicPortal使用了流行的单入口方法实现portal,在web.xml文件中,你会看到类似如下的两个servlet:
AppManagerServlet=uix.servlets.manager.PortalServlet
PortletServlet=uix.servlets.manager.PortletServlet
对于任何扩展名为portal的访问,都会由PortalServlet进行解释,这种熟悉的解决是否令你想起了struts或axis?
在beaportal中,对struts的支持已是相当完善的了,不过,还有更好的框架,那就是pageflow。
PortletServlet继承了UIServlet,而后者则继承了Servlet,这样一来,你就可以猜到它的生命周期了吧。
内部流程:
PortalServlet.service
UIServlet.service
Lifecycle.run
ControlTreeWalker.walk
JspRenderer.beginRender
JspRenderer.endRender
参数传递
调用portlet时,可能会传递一些参数进去,例如对于信息发布系统,在同一页面可能需要显示多个栏目的新闻,即在同一个page中可能调用同一个portlet的多个实例,此时,传递参数是实现这个方案的关键。
对于传统的jsp来说,是通过include中来传递参数。
而对于portlet来说,JSR168已指定的一个标准,此外,WeblogicPortal也提供了一个实现方案。
详细描述见下:
JSR168标准
1、在portlet.xml部署文件中进行参数值指定,见下面例子。
xsi:
schemaLocation="
xmlns="
info
InfoView
text/html
edit
showChannelTitle
true
2、获取、设置参数:
WebLogicPortal8.1用法
1、在portlet窗口中,新建一个Prefenrence,见下图:
2、为Prefenrence指定参数值。
见下图:
3、获取、设置Prefenrence
使用Weblogic提供的标记库,包括:
getPreference、getPreferences等。
Cache机制
Portal使用的是Weblogic的公共Cache机制,在portlet部署中可以独立指定Cache的超时时间。
用户认证
Portal用户认证,使用是的weblogic的安全机制,参见如下流程:
com.bea.p13n.security.Authentication.login(p13n_system.jar)
weblogic.servlet.security.ServletAuthentication.weak(weblogic.jar)
we
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- weblogic 主题