Linux中国  设为主页
 收藏本站
 
当前位置: > 首页 ->Linux技术 ->Linux安全 ->Apache 门户项目组介绍
  相关分类: 
入门与提高
系统管理
网络应用
嵌入式系统
内核研究
服务器相关
发行版专区
Linux程序设计
Linux安全
BSD相关
桌面应用
  站内搜索: 
热门文章排行
热门文章排行 linux环境变量设置及保存地点 (04-22)
Apache 门户项目组介绍 (04-22)
黑客高级技巧 Linux后门技术及实践 (05-01)
安全多方位 Linux系统守护进程详解 (04-20)
UNIX 高手的10 个习惯 (04-22)
精采文章排行
精采文章排行 黑客高级技巧 Linux后门技术及实践 (05-01)
IP安全加密 IPSec安全技术全面接触 (05-01)
LINUX2.4.x网络安全框架 (04-26)
分级防御对Linux服务器的攻击 (04-26)
基于Linux开发的FireboxⅡFastVPN (04-26)
  ·黑客高级技巧 Linux后门技术及实践 ·LINUX2.4.x网络安全框架 ·分级防御对Linux服务器的攻击 ·基于Linux开发的FireboxⅡFastVPN ·十项Linux安全管理技巧经验总结 ·高级Linux安全管理技巧 ·发现Linux压缩格式漏洞 达第二最危险级别·Unix和Linux下的Acrobat Reader 5受攻击 ·Linux操作系统下防垃圾邮件基本功

Apache 门户项目组介绍

作者:廖 健    来源:IBW DW中国   点击:   日期:2007-04-22 [收藏] [投稿]

  IE是否经常中毒?推荐您

下面我们来看看这个文件的格式:


<portlet-app id="j2-admin" version="1.0"
xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
xmlns:js="http://portals.apache.org/jetspeed"
xmlns:dc="http://www.purl.org/dc">
    <js:services>
        <js:service name="ApplicationServerManager" /> 
        <js:service name="DeploymentManager" /> 
        <js:service name="EntityAccessor" /> 
        <js:service name="GroupManager" /> 
        <js:service name="PageManager" /> 
        <js:service name="PermissionManager" /> 
        <js:service name="PortalAdministration" /> 
        <js:service name="PortletFactory" /> 
        <js:service name="PortalAdministration" /> 
        <js:service name="PortletRegistryComponent" /> 
        <js:service name="PortalStatistics" /> 
        <js:service name="Profiler" /> 
        <js:service name="RoleManager" /> 
        <js:service name="SearchComponent" /> 
        <js:service name="SSO" /> 
        <js:service name="UserManager" /> 
        <js:service name="HeaderResource" /> 
    </js:services>
</portlet-app>

跟据XML Element的名字,可以理解就是提供给j2-admin这个Portlet应用程序使用的一些Services。那么这些Services是怎么定义的呢?以UserManager这个服务为例,首先回到前面提到过的assemble目录下,找到jetspeed-services.xml和 security-managers.xml,下面分别是它们的内容节选:

jetspeed-services.xml


<beans default-lazy-init="false" default-dependency-check="none" default-autowire="no">
  <!-- 
 Portlet Services  
  --> 
<bean id="PortalServices"
class="org.apache.jetspeed.services.JetspeedPortletServices" 
abstract="false" singleton="true" lazy-init="default" autowire="default"
dependency-check="default">
<constructor-arg>
        <map>
            <entry key="SearchComponent">
                <ref bean="org.apache.jetspeed.search.SearchEngine" /> 
            </entry>
<entry key="UserManager">
                <ref bean="org.apache.jetspeed.security.UserManager" /> 
            </entry>
            <entry key="PageManager">
                <ref bean="org.apache.jetspeed.page.PageManager" /> 
            </entry>
        </map>
     </constructor-arg>
   </bean>
</beans>

security-managers.xml


<beans default-lazy-init="false" default-dependency-check="none" default-autowire="no">
<bean id="org.apache.jetspeed.security.UserManager"
class="org.apache.jetspeed.security.impl.UserManagerImpl" abstract="false"
singleton="true" lazy-init="default" autowire="default"
dependency-check="default">
       <constructor-arg>
           <ref bean="org.apache.jetspeed.security.SecurityProvider" /> 
       </constructor-arg>
    </bean>
</beans>

由上面的两个文件,我们可以清楚地看出UserManager是定义security-managers.xml文件中的,但是为了能够在portlet服务中引用它,还必须在jetspeed- services.xml中再次引用它的bean name,org.apache.jetspeed.services.JetspeedPortletServices封装了一个Map数据结构, Map中存放的就是服务名称和该服务POJO对象引用,这一切便利都是由Spring带来的。

下面是在Portlet的代码中使用该服务的例子:


protected UserManager userManager = null;
public void init(PortletConfig config) throws PortletException {
super.init(config);
    userManager = (UserManager)           
	getPortletContext().getAttribute(CommonPortletServices.
	CPS_USER_MANAGER_COMPONENT);
    if (null == userManager) {
        throw new PortletException("Failed to find the User Manager 
		on portlet initialization");
    }
}

Jetspeed鼓励Portlet开发者在开发过程中,将公共的Service用Spring Bean的方式封装起来,然后添加到Jetspeed-services中,这样就可以在Portlet代码中轻松复用这些公共Service了,并且还可以利用Spring来管理这些Service的生命周期。事实上,Jetspeed自带管理界面Portlet应用程序就大量采用了这种技术。

还有一个需要注意的问题是,用户自定义的Service必须放到Tomcat的shared\lib下面去,以保证JAVA Classloader能够找到它。

Jetspeed核心组件简介

介绍了那么多Jetspeed架构方面的信息,下面我们一起来快速浏览一下Jetspeed Portal的核心组件。

Jetspeed-Api

路径:components/jetspeed-api

定义几乎所有的jetspeed-api interfaces,一般的开发者都使用这个组件中定义的接口进行二次开发。

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<

上一页 1 2 3 4 5 6 78 下一页

上一篇:LVM 五分钟教程   下一篇:深入Linux PAM 体系结构
文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论

   相关文章:
·IP安全加密 IPSec安全技术全面接触

   文章评论:(1条)
  
 请留名: 匿名评论   点击查看所有评论 论坛讨论
 

 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。