当前位置:文档之家› WebSphere Portal新手入门基础课程

WebSphere Portal新手入门基础课程

WebSphere Portal新手入门基础课程
WebSphere Portal新手入门基础课程

WebSphere Portal新手入门—基础课程

1. Portal基础

1.1. 什么是Portal

]s-e r d3S&j:h O

Portal 一词是在Internet 的发展中提出来的,原意为“门户网站”即是人们上网后想要访问的第一个网站,例如雅虎、搜狐这类网站。在这个阶段,Portal 还是作为一个面向广泛群体的信息平台,把人们所需要的各种信息(或者访问这类信息的途径)聚合在一起,是一个信息集中平台。很快企业应用中也开始采用Portal 这个概念,根据Portal 在企业应用中的不同作用,业界对Portal 有着不同的定义如企业信息门户、知识门户、专业门户、应用门户等等。随着时间的推移,业界对Portal 的定义趋向一致,也就是在JSR168 种对Portal 的定义:y I S-|{

portal爱好者

_ H |p.N F J h

A portal is a web based application that ?commonly- provides personalization, single sign on, content aggregation from different sources and hosts the presentation layer of Information Systems. Aggregation is the action of integrating content from different sources within a web page. A portal may have sophisticated personalization features to provide customized content to users. Portal pages may have different set of portlets creating content for different users.

https://www.doczj.com/doc/6718116560.html, T1Z(_1G'r o c,l

从上述定义中我们可以知道Portal 是企业用户访问各种企业信息、应用的入口,如下图:

o

o"M

].|T*U

1.2. 什么是Portlet

作为企业信息、应用的入口,Portal 的每个页面(Page )包含了多种不同的信息,一般来说Portal 的显示如下:K w+@h l

,z9[+Ss}*^n

(v Y

Q h d _6}1U5D

上图中你可以看到有多个小窗口,每个窗口是一个独立的应用,这些窗口称之为Portlet ,一个Portal 可以看作是Portlet 的集合。

1.3. Portal的组成

一个Portal 可以看作是Portlet 的集合,Portal 需要提供一个Portlet 的运行环境,称之为Portlet Container 。Portlet Container 负责创建Portlet ,管理它们的生命周期;接受Portal 服务器的请求并将请求转发给相应的Portlet ,同时返回Portlet 生成的内容。

而Portal 服务器负责将每个Portlet 生成的内容聚合起来展现给用户,同时负责与用户交互。如下图:

https://www.doczj.com/doc/6718116560.html, R:E`1Bw

portal爱好者C A3b l

w{s W9z&{

1.4. Portlet规范https://www.doczj.com/doc/6718116560.html,6_'e g#t F S

因此在开发Portal 应用时,应用开发商主要是在开发实现各个功能的Portlet ;同样为了让用户通过Portal 访问自己的产品,产品开发商也为自己的产品提供Portlet 实现。然而不同Portal 服务器各自Portlet 实现的细节有所不同,导致Portlet 无法在不同的Portal 服务器上兼容,对于同一个应用在不同的Portal 服务器上展现需要实现不同的Portlet 。0J%j U MG G,P3}

$q D4F s4v-F C [!S

为了解决这种情况,Portal 服务器厂商开始制定Portlet 规范,目前最重要的规范是:Java Portlet Specification 和Web Services for Remote Portlets 。

https://www.doczj.com/doc/6718116560.html,'c-}#X7c d F$p e

其中Java Portlet Specification 由JCP(Java Community Process) 组织维护,属于其中的JSR168 ,已经在2003 年10 月27 日完成 1.0 的最终版本; Web Services for Remote Portlets 由OASIS 组织维护,在2003 年8 月其1.0 版本被正式通过为OASIS 标准。portal爱好者0X/v6J0q[|&Y5q8k Q

https://www.doczj.com/doc/6718116560.html, m/x-n9E m3ti"`5m

在接下的章节将着重讲述Java Portlet Specification ,并简要介绍Web Services for Remote Portlets (简称WSRP )。

Y q u h }F;C {

2. Java Portlet Specification

2.1. 一个例子-n7Q&|/v\ ]mB A

Java Portlet Specification 中对Portlet 的定义是:

A portlet is a Java technology based web component, managed by a portlet container that processes requests and generates dynamic content. Portlets are used by portals as pluggable user interface components that provide a presentation layer to Information

Systems.

portal爱好者J;P7f w M+_`

到底一个Portlet 是怎么样的,首先让我们来看看这个例子:

)V

K"O;n Y*X/@ ]

Hello.java import java.io.IOException;

import javax.portlet.*;

public class Hello extends GenericPortlet portal爱好者/O N m D|g P8q*v t E { a U e)K m,Z1Y

public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException

{

response.setContentType("text/html");

response.getWriter().write("

Hello, this is my first JSR168 portlet!

");

}

} https://www.doczj.com/doc/6718116560.html,)[X2O}J'v"\

"_9l d"c E:w

#d2B M)x%I3i Q

portlet.xml }W;_%[S%|m*M ]

q

}2w

xmlns="https://www.doczj.com/doc/6718116560.html,/xml/ns/portlet/portlet-app_1_0.xsd" ?q'}Z M,e)X` xmlns:xsi="https://www.doczj.com/doc/6718116560.html,/2001/XMLSchema-instance"

xsi:schemaLocation="https://www.doczj.com/doc/6718116560.html,/xml/ns/portlet">

Description goes hereG*{c;c*g+{8J

Hello

Hello .^w-t6t C Y e$z4v4H

Hello $_W q2m-p Z0p D n

B*[%Z?tr4v|

portal爱好者h)u$cd a&cA

运行结果:(}a#P

i C D-|8S

t z A ~-R

I4R Qa c&~-p N

Z/sW

到目前看来Portlet 和Servlet 很类似,同样都是Java 语言编写的Web 组件,例子中doView() 方法与Servlet 的doPost() 等方法也很类似,那么为什么不直接使用Servlet 技术来实现而需要另外定义一个Portlet 规范呢?

8K h.X N5}C?S"z L(N

事实上Portlet 规范是在Servlet 规范基础上实现的,但是Portlet 还拥有许多Servlet 所没有的特性,在接下的小节中将详细介绍这些特性。

F'V i(O F&q

F(Q%n"a4{T5O F1N v0f

2.2. 生命周期

首先看看Portlet 的接口定义:package javax.portlet

public interface Portlet { U f1W x'H H H l W!U],V

public void init(PortletConfig config) throws PortletException; portal爱好者L-

^i a M X S S T4i

public void processAction( ActionRequest request, ActionResponse response) throws PortletException, IOException; https://www.doczj.com/doc/6718116560.html,%`z B V-C9\}

public void render(RenderRequest request, RenderResponse response) throws PortletException, IOException;

public void destroy(); r9A6M6]h n*z_

} portal爱好者2u8H:V D0n c

我们可以看到熟悉的init() 和destroy() 方法,当Portal 服务器启动时,Portal Container 将相应的Portlet 实现类载入、实例化,然后调用init() 方法,开发人员通过该方法实现所需的初始化工作;在服务器退出运行之前,Portal Container 调用每个Portlet 的destroy() 方法,开发人员在这个方法中释放资源。另外的processAction() 和render() 两个方法则是用于处理用户请求,整个周期如下图:

portal爱好者,z'j3^o Q m-X j d

2.3. Portlet Request & URL portal爱好者-n3H X`2T;^7O Z

在一个Portal 页面中,通常都包含了多个Portlet ,在一个时刻用户只能与一个Portlet 交互,当用户向一个Portlet 发出请求(例如点击了“ submit ”按钮),整个Portal 页面将会重新构成。在这个过程中,是否有与用户交互的Portlet 处理方式显然是不同的,而且用户没有与之交互的Portlet 显然不应该受到用户的请求参数。

因此JSR168 规范中将对Portlet 的请求分为Action 和Render 两种。Portlet 在收到Action 请求,获取用户所提交的信息,进行相应的处理;受到Render 请求后,则生成页面代码。当用户向一个Portlet 发出请求,该请求被Portlet 容器接受,Portlet 容器再

调用相应Portlet 的processAction() 方法;等到processAction() 方法执行完毕后,Portlet 容器再调用所有Portlet 的render() 方法,并将这些方法所返回的内容组合形成一个页面返回给客户端。如下图:

*{.y7qv.u,s S^G

在上述过程中,所有Portlet 的render() 方法的调用次序在规范中没有规定,既可能是有顺序的串行调用,也可能是多线程的同步调用,依赖于厂商的具体实现。

y e+P g v m7z

为了接受用户请求,一个Portlet 需要有一个指向其自身的URL ,例如用在HTTP FORM 的ACTION 字段。但是与Serv let 不同的是,Portlet 不是一个完整的页面而只是页面的一部分,一个Portlet 可以出现在多个页面中,所以Portlet 无法绑定具体的URL 。在JSR168 规范中定义了PortletURL 接口,通过该接口可以得到指向Portlet 自身的URL ,对应两种用户请求有两种产生URL 的方法:

&i u b F3E"e X]0Fa g

for render(): PortletURL url = response.createRenderURL(); :K Z8V L6}

url.setParameter(“customer”,”https://www.doczj.com/doc/6718116560.html,”); url.setParameter(“show”,”summary”);

/e9g"r+}]

writer.print(“Summary”);

portal爱好者

R!Q F M R

portal爱好者d t t8O-w B b a J

for processAction():

PortletURL url = response.createActionURL();

url.setParameter(“paymentMethod”,”creditCardInProfile”);

url.setWindowState(WindowState.MAXIMIZED); portal爱好者V9i$n%} E(O B V W-T writer.print(“

”);

0_1@

D K^5c3^L(S!a

上面的代码我们可以看到,除了得到URL 外,还可以在其中加入参数。另外由于Portal 服务器厂商通常都会利用URL 增加一些产品相关的参数,因此强烈建议在Portlet 中提交用户请求采用POST 方式。

2.4. Portlet Modes & Window States

在Portal 应用中,用户通常需要设置、调整Portlet 的显示方式,对此JSR168 同样做出了规定。分别有Portlet Modes 和Window States 。https://www.doczj.com/doc/6718116560.html, s%p7r-c.[

Portlet Modes 说明Portlet 目前所执行的功能模式,规范要求Portal 服务器必须支持

以下三种模式:6o p j&?p n K

VIEW ——内容显示,通常为缺省模式

EDIT ——编辑相关的设置5i R s T i o P V

HELP ——显示帮助信息https://www.doczj.com/doc/6718116560.html, N1Q D&Y%c

除此之外可以Portal服务器可以实现自定义的模式。

https://www.doczj.com/doc/6718116560.html,*i\;Q a#_[-l y n%d

v B}0@R5P4\9H

e e#V

每个Portlet 在Portal 页面中就是一个“窗口”,类似于MS Windows 、XWindo 等窗口系统Portlet 也有自己的窗口状态(Window States ),规范要求Portal 服务器必须支持以下三种窗口状态:

NORMAL ——普通portlet 窗口,在这个状态下通常是与其它Portlet 共享Portal 页面; MAXIMIZED ——最大化portlet 窗口,独占Portal 页面;

MINMIZED ——最小化portlet 窗口

除此之外可以Portal服务器可以实现自定义的窗口状态

https://www.doczj.com/doc/6718116560.html,2m

t[!T Q|

在规范中对这些特性进行定义,使得Portlet 开发者无需关心这方面实现细节,另外在processAction() 和render() 方法中开发者都可以通过getPortletMode() 和getWindowState() 等方法获得当前Portlet 的情况从而决定相关操作。portal爱好者

6R4g6M O4T Z{:k k5E

https://www.doczj.com/doc/6718116560.html, D \P ~8O u

2.5. Preferences & User Information +B G3Y r4F I7g&M

portal爱好者v4Y-m o3D b

Portal 应用一个重要功能就是“个性化”,一方面Portal 服务器需要根据用户的不同显示不同的Portlet ,另一方面同一个Portlet 也会根据用户的偏好显示不同的内容。这就要求Portlet 需要保存一些用户的相关信息,例如一个股票实时信息的Portlet 会根据用户所关注的股票显示相应的信息。*Q

e-F"z$o

7c W l)g@#T

每个Portlet 都可能有自己相应的个性化信息,JSR168 规范提供了PortletPreferences 接口来操纵这些信息。PortletPreferences 接口提供读取、设置属性的方法,如下:

PortletPreferences prefs = req.getPreferences();

String[] symbols = prefs.getValues(”preferredStockSymbols”,

new St ring[]{”ACME”,”FOO”}); portal爱好者)E E%w l*Y

o

portal爱好者b1G`$l6p R

F}9~B&?3D{&V'K

在JSR168 规范中PortletPreferences 是用户相关的,也就是通过getPreferences() 获得的对象是与当前登录用户绑定的,PortletPreferences 不会在用户之间共享属性。Z?,v2?T Y

PortletPreferences 提供了一个基本的读取、设置个性化属性的途径,使得Portlet 无需依赖具体的数据储存环境(例如数据库联接、表结构等等)就可以实现个性化并能够在不同的Portal 服务器之间移植。但是不应该使用PortletPreferences 来替代一般的数据库功能。

Q i2U:Z)j-P

在实现个性化功能中经常需要获取各种用户信息,例如用户姓名、地址等等。因此JSR168 也提供了一个获取用户信息的途径,如下:h9p g3F

r L#P+\G

I V$C/_k D {&J

Map userInfo = (Map) request.getAttribute(https://www.doczj.com/doc/6718116560.html,ER_INFO); String givenName = (userInfo!=null) ? (String) userInfo.get(“https://www.doczj.com/doc/6718116560.html,.given”) : “”; i E t K b ?

String lastName = (userInfo!=null) ? (String) userInfo.get(“https://www.doczj.com/doc/6718116560.html,.family”) :

“”;$X T b#^i p j

所获得的Map 对象是一个只读对象,不能更改。但是用户信息应该包含什么内容不在JSR168 规范的范围,事实上目前还没有关于访问用户信息的Java 标准,JSR168 提到在以后形成访问用户信息的Java 标准时,当前的机制就会被取代。

portal爱好者N*R+Q T8W)A

2.6. Sessions

作为一个Web 应用组件,Portlet 同样有Session 这个机制用于跟踪用户操作,而与一般的Web 应用所不同的是Portlet 的Session 属性有两种作用域:? portal爱好者;K~3O A Y3?&G7Q

portal爱好者h U I G C v Z-Y

PORTLET_SCOPE:属性只能被设置它的Portlet访问? https://www.doczj.com/doc/6718116560.html, o.K e+E Q K q X

APPLICATION_SCOPE:属性可以被同一个Portal应用中的所有Portlet访问B

b8D3X-?2q f

PortletSession session = request.getSession(true);

https://www.doczj.com/doc/6718116560.html,:Q_6[+R%[m,N*Q

O

URL url = new URL(“https://www.doczj.com/doc/6718116560.html,”);

session.setAttribute(“home.url”,url,PortletSession.APPLICATION_SCOPE);

session.setAttribute(“bkg.color”,”RED”,PortletSession.PORTLET_SCOPE);6E"H

t6Q m R5A

portal爱好者w)A L})A W,B l{W

w c9J t g

2.7. Request Dispatch & Portlet Tag %c Q%d I A?;W3} v a#?1z

在实现Portlet 应用时,开发者往往会利用Servlet 、JSP 等资源,起码会有两个目的会这样做:

为了利用现有的资源,简单地将已经写好的Servlet 、JSP 应用转换成Portlet ;

方便Portlet 的表现层开发。Portlet 规范类似于Servlet 规范,在表现层开发上远远不如JSP ,因此需要利用JSP 来开发界面。

JSR168 提供了类似Servlet RequestDispatcher 的接口来实现利用Servlet 、JSP 等资源的功能。https://www.doczj.com/doc/6718116560.html, x5sV(w1v

例子如下:

String path = "/raisons.jsp?orderno=5"; H8r dA P.F

PortletRequestDispatcher rd = context.getRequestDispatcher(path);

rd.include(renderRequest, renderResponse);

{x

p%}B B S S

[1f]a t

当一个JSP 页面需要作为Portlet 应用的一部分,JSP 开发者需要获得相关的Portlet 信息,为此JSR168 提供了相应的JSP Tag 来实现相关的功能。通过相应的Portlet Tag ,JSP 开发者可以获得相应的Portlet Request/Response 对象,产生ActionURL 或者RenderURL 等等。4J1V C y t;R|

2.8. 安全

"_

P5n R/G(X(E:D(y

JSR168 规范中关于安全篇幅是比较简短的,这是因为Portlet 的安全机制与Servlet 基本上是一致的。JSR168 规范没有定义Portlet 的认证机制,完全交由底层的Servlet 容器负责,就像一个普通的Web 应用一样。

m

d;Y K O8C S*\5?

对于授权机制,采用J2EE 的“ role ”模式,即可以由开发者通过编程来处理授权,开发者可以通过getRemoteUser() 、getUserPrincipal() 、isUserInRole() 等方法来获得用户的安全信息,从而决定是否允许用户执行相关操作;也可以由部署人员通过配置文件来管理授权,就如同Servlet 、EJB 的部署者一样。

portal爱好者R,j6\6@q~

2.9. 缓存portal爱好者-T w T4e&_j]+a s i#G X

在 2.3 小节中我们知道,用户每次向Portal 应用发送一个请求,该页面中所有的Portlet 都会被Portlet 容器调用render() 方法来产生相应内容。但是只有一个Portlet 才会处理用户请求,其它不处理用户请求的Portlet 可能每次的显示内容都是不变的。

?+w O F.B.k~!I J%F

https://www.doczj.com/doc/6718116560.html,}x~

Z

?(B2g

因此JSR168 定义了缓存机制来提供Portal 应用的效率。在portlet.xml 中可以定义缓存的失效时间,如下:

https://www.doczj.com/doc/6718116560.html,4p

J2N+e I;h

...

300

...

这样Portlet 容器在调用Portlet 的render() 方法之前就会检查有缓存是否已经有效,如果有效的话就直接使用缓存内容。Portlet 缓存是跟客户端相关的,不同的客户端访问同一个Portlet 分别有自己的缓存而不会混淆。P s B0}k'D;M Q

JSR168 对缓存机制的实现不是强制性的,Portal 服务器厂商可以自行决定是否实现这个特性。https://www.doczj.com/doc/6718116560.html, L F B K Q s J

.k/i r6L a

2.10. CSS Style Definition portal爱好者&t e,v p@L

在一个Portlet 应用中,所有Portlet 应该具有显示上的一致性,例如使用相同的字体等等。为了到达这一点,JSR168 定义了一套 CSS 元素名称, Portlet 开发者都应该采用这套CSS 来产生显示内容。x+O#H*L Y`R q J

x,Y

这套CSS 定义主要包含了Fonts 、Message (例如告警、通知等等)、Sections 、Forms 。

2.11. Portlet VS Servlet https://www.doczj.com/doc/6718116560.html,-b y h`%@V,d

,L H L U D"T9m9V:Ld

f

Portlet 和Servlet 是十分类似的,只是由于Servlet 无法达到Portal 应用的要求JCP 才定义了新的Portlet 规范,为了尽可能与现有的Servlet 结合达到重复使用的目的,portlet 的规范利用了Servlet 的规范,许多观念都很相似的。在讲述了Portlet 的特性后,我们再来看看他们直接的异同。&q K5B(Q x u&v%D

N3R9x }r p:h

j m o

相似之处:

portal爱好者K/k Q o K1I

Portlet 也是Java 技术的web 组件

Portlet 也是有特定的container 在管理

Portlet 可以动态产生各种内容"|,L x.N A z S V

Portlet 的生命周期由container 所管理9S3}1n:|,E j4Y Portlet 和客户端的互动是通过request/response 的机制不同之处:

Portlet 只产生markup 信息片段,不是完整的网页文件 Portlet 不会和URL 有直接的关系

客户端必须通过Portal 系统才能和Portlet 互动1w

^

s&ah*V4}\Z

Portlet 有一些定义好的request 处理,action request 以及render request !@S

l/k E'q

Portlet 默认定义portlet modes 及窗口状态

Portlet 可以在同一个portal 网页之中存在多个

Portlet有的功能而Servlet没有:

Portlet 能够存取及储存永久配置文件及定制资料

Portlet 可以存取使用者数据

Portlet 具有URL 的重写功能能够在它的内容中动态建立连结

https://www.doczj.com/doc/6718116560.html,&|!L g Y^q1w@

Portlet Session 的属性拥有两个不同的范围:application-scope 及portlet-scope

j H.?2o n8r-[

Portlet不具备而Servlet提供的功能r#@"\.m(\;F`m u[

Servlet 具有设置输出的文字编码( character set encoding) 方式6a7a5`7j Y I,_ t

Servlet 可以设置HTTP 输出的header

Servlet 才能够接收客户对portal 发出的URL 请求

3. Web Services for Remote Portlets 7U5Q P/_!_m5[

3.1. 动机

作为Portal 服务器,需要聚合不同信息源的内容,为了实现这个目标开发者往往需要开发各种Portlet 程序。在目前的计算环境中,已有系统的服务接口基本都是面向数据的,例如一个人事系统提供查询员工年假天数的服务接口,客户端提供员工代码而认识系统则返回年假天数数值。传统的面向数据的服务接口不包含任何用户交互或表示功能,为了让Portal 用户使用这些服务,开发者还需要开发相应的Portlet 程序提供用户界面,而在后端使用面向数据的服务接口。

这种模式在集成新的外部服务是要求在Portal 服务器上部署新的Portlet 组件,从Portlet 开发到部署这个过程往往繁琐而且昂贵。而且当一个新的Portal 服务器需要集成相同的外部服务时,即使不需要重新开发Portlet (假设使用JSR168 规范开发Portlet ),还是需要在本地安装Portlet 代码,并使其在Portal 服务器上可用。@-b9z W0|,\S

如果这些外部服务可以被Portal 服务器直接引用,而无须开发、部署这些过程,那么将极大地提高Portal 集成外部服务的效率并降低成本。Web Services for Remote Portlets (以下简称WSRP )规范就是为了这个目的出现的。 WSRP 规范致力于定义一个面向表示的Web Services 协议以及相应的接口集,面向表示的Web Services 协议不仅提供商业逻辑还提供界面表示,使得应用程序可以容易的通过代理工具集成面向表示的Web Services。

3.2. 角色和流程

V$U(R S w

在WSRP 规范中,存在以下的角色包括:https://www.doczj.com/doc/6718116560.html, D$e

O-l P!S y

Portlet :提供具体商业逻辑和表现逻辑的程序实体;

Producer :作为Portlet 的容器提供Portlet 运行环境,并对外提供符合WSRP 规范的Web Services;

Consumer :作为中间系统,一方面负责管理与用户交互并根据用户请求与Producer 交互,另一方面将不同Producer 或Portlet 返回的表现内容合并后返回为用户;

End-User :使用服务的最终用户,只与Consumer 直接交互

在实际的应用场景中,上述角色的交互流程一般如下:1j[*Q F B'j

portal爱好者9V"U[i*}T*l i9i

%[i:R3C%Z F o#K9I

Consumer 发现Producer 。这个步骤中Consumer 可能是通过UDDI 在注册中心等服务机构将获知Producer 的URL 及服务端口等基本信息;

Consumer 与Producer 建立联系。这个步骤双方交换更多的信息包括基本支持特性、安全要求等等;"i!E2[B k L8`

在联系建立后,Consumer 将进一步获知Producer 提供的所有功能和服务;

用户与Consumer 建立联系。这个步骤往往包括对用户的认证以及用户个性化等;

k T K-p J%u&E1_

Consumer 将内容页面返回给用户,页面中一般都聚合了Portlet 内容;

用户发出请求,这一般是与Portlet 内容交互的结果;

Consumer 分析用户请求,并向Producer 提交相应的 Web Services 请求;Producer 返回处理结果,包括商业逻辑结果和表示内容;e-J%?t })S M Consumer 聚合所有Portlet 的内容,形成相应页面返回给用户;"A o i?5k

最后,Consumer 和Producer 解除联系。h!N S

z y

3.3. 接口概览/U R v6H!G e-{

g1n

portal爱好者1t$G$r~.K E[

为了使得应用程序可以容易的通过代理工具集成面向表示的Web Services , WSRP 规范定义了以下接口:

https://www.doczj.com/doc/6718116560.html,2i

@&m V0R m

Registration :用于管理Consumer 和Producer 之间的联系;(a"h]b[O}L Service Description :Consumer 通过这个接口可以获知Producer 所提供的功能及相关属性,还包括Producer 所能提供的Portlet 列表等等;

Markup and User Interaction :Consumer 通过该接口获得Portlet 产生的内容代码,同时该接口还提供Session 和Cookie 管理功能;<

Portlet Management :提供访问、设置Portlet 特性,克隆、删除Portlet 等功能。

9h6v@D}$o

通过上述标准接口,作为Consumer的Portal服务器可以开发一套固定的代理程序,方便地集成任何符合WSRP规范的外部服务。M|u k2\l

3.4. 安全

B1M6I*m N

y#p(y

在WSRP 规范中没有对安全主题进行描述,因为 WSRP 规范是建立在 Web Services 的基础之上的,所以关于安全方面开发者可以使用现有的任何针对Web Services 的安全协议例如WS-Security 、SAML 、XML-Signature 、XML-Encryption ,并且可以使用SSL 等。

%L&]

V/M{3q3m F*M o E

4. Portlet in Weblogic Portal

Zp*w O u N

4.1. 丰富、完整的支持https://www.doczj.com/doc/6718116560.html, X-A:y B ~:_ h f8b S d

Weblogic Portal 是目前最优秀、技术最先进的Portal 产品之一,对Portlet 的实现也提供了完善的支持,在目前最新的版本(WLP8.1 SP2 )所支持的 Portlet 类型包括:

JSP/HTML 、Java Page Plow 、Struts Portlet :能够方便地将现成的程序直接当作Portlet 被Portal 服务器使用,而无须对原来的程序作任何修改。目前已有的Web 应用大都建立在这些技术的基础上,为了企业应用开发者、管理者能够方便地将这些应用以Portal 的形式展现给用户,Weblogic Portal 提供图形化的向导工具,只需是用鼠标通过三四个步骤,就能够完整实现相应的Portlet 。portal爱好者G Z G{W*m/I l D

JSR168 Portlet :作为业界领先的Portal 服务器,Weblogic Portal 提供对JSR168 规范的完全兼容,可以使用任何符合JSR168 规范的Portlet 。而通过Weblogic Workshop 来开发JSR168 Portlet 是非常方便,开发工具将自动生成程序代码框架,并自动生成相应的部署文件,开发者只需关心商业逻辑的实现。y`R-|r-t

WSRP Portlet :因为 WSRP 规范刚刚通过 1.0 版本不久,所以 WLP8.1 SP2 这个版本还没有带上对WSRP 的支持。不过现在BEA 公司已经提供 Web Services for Remote Portlets Support Kit ,只需安装该模块就可以让Weblogic Portal 提供对WSPR 的支持,包括:

https://www.doczj.com/doc/6718116560.html, I f B$y N.F n5r4f])v Y

Web Projects as WSRP Producers :能够直接将已有的Java Page Flow 应用作为WSRP Portlet 对外提供服务;portal爱好者"N g

[%t-A Y'A*F

Portal Web Projects as WSRP Producers :将已有的Portal 应用通过WSRP 协议让远程的Consumer 使用;

Portal Web Projects as WSRP Consumers :作为Portal 服务器使用WSRP 兼容远程Portlet 。X

T

A7q

相关主题
文本预览
相关文档 最新文档