dev2dev 首页 > 资源中心 > 专家Blog > 专家Blog文章
WSRP和远程资源
最近我对Web Services for Remote Portlets (WSRP)规范进行了大量研究,因为该规范在市场上引起了一些注意。它尤其引起了那些希望将开发和部署功能(包括用户界面)的控制权留给各个业务线,而仍然将该功能聚合到单个应用程序中的大型企业的兴趣。
首先我简要介绍一下WSRP。它的范型是消费者代理访问从不同生产者到用户的浏览器中的内容。例如,如果消费者访问门户,门户(称为消费者)代表发出请求的用户反过来访问各种提供内容的远程生产者。然后生产者返回的HTML标记就与其他内容一起呈现在用户的浏览器中。
这意味着,用户永远无法直接访问任何生产者,而且通常不能实际访问公司防火墙后面的生产者。因此,就引发了一个常见的问题:如何使图像之类的资源对用户可用?要知道,资源通常是作为链接或URL呈现在内容中的,浏览器收到HTML后就独立解析这些资源。如果资源来自一个该浏览器无法访问的生产者,浏览器就无法检索到该资源。
幸运的是,关于WSRP,WebLogic Portal中有一个鲜为人知的特性,就是通过消费者从生产者代理图像和其它资源到用户的浏览器中。如果您有一个门户应用程序,那么看一下该应用程序的web.xml文件,您就会注意到其中指定了一个ResourceProxyServlet。该servlet负责从消费者门户代理资源请求到生产者。
它的工作方式是:生产者方面的资源URL被映射为消费者方面的ResourceProxyServlet。被映射的URL包括使ResourceProxyServlet可以确定在何处检索内容的各种参数。因此当用户的浏览器试图解析该资源时,它就向消费者而不是生产者发送请求,然后消费者将该请求代理到底层的生产者。这样,用户的浏览器就永远不会直接访问生产者。
要使用代理功能,只需使用WebLogic Portal所提供的render:resourceUrl定制标签。使用该标签时,WebLogic Portal自动重写URL,使其在通过WSRP访问portlet时使用消费者资源代理。例如:
<img src='<render:resourceUrl path="/demo/resources/images/weblogic-img-lt.jpg"/>'>
注意,很明显,这个代理功能在流程中又添加了一个新的跃点,而这可能对性能产生一定的影响。也许影响不是那么明显,因为浏览器缓存了大部分的资源,但是还是值得考虑集中查找在多个生产者之间共享的公共图像和资源。
原文出处:http://dev2dev.bea.com/blog/gnunn/archive/2006/03/wsrp_and_remote.html
作者其它文章
|