Alfresco 2.0 解读

本文详细解读了Alfresco 2.0的重要特性,包括数据库模型的变更、服务升级和分类系统的优化。同时,探讨了其在hibernate框架下如何实现bean管理和导入操作。
摘要由CSDN通过智能技术生成
Alfresco 2.0 解读
 
一、介绍
Alfresco is the Open Source Alternative for Enterprise Content Management (ECM), providing Document Management, Collaboration, Records Management, Knowledge Management, Web Content Management and Imaging.
 
采用的技术
Java
Spring Aspect-Oriented Framework
ACEGI – Aspect-Oriented Security Framework
MyFaces JSF Implementation
Hibernate ORM Persistence
Lucene Text Search Engine
JLAN
POI File Format Conversion
PDFBox – PDF Conversion
OpenOffice
jBPM
Rhino JavaScript engine
支持的接口
CIFS/SMB Microsoft File Share Protocol
JSR-168 Portlet Specification
JSR-127 Java Server Faces
FTP
WebDAV
Web Services
REST
 

二、配置解读
1、从web.xml开始入手
其它的略过,在 web.xml 中可以看到加载了如下 Spring 配置文件
< context-param >
            < param-name > contextConfigLocation </ param-name >
            < param-value >
     classpath:alfresco/web-client-application-context.xml
     classpath:web-services-application-context.xml
     classpath:alfresco/web-api-application-context.xml
     classpath:alfresco/application-context.xml
  </ param-value >
            < description > Spring config file locations </ description >
</ context-param >
web client 层
alfresco/web-client-application-context.xml
打开它可以看到它引入了所有的 alfresco/web-client*.xml & alfresco/extension/web-client*.xml & jar:*!/META-INF/web-client*.xml
web api 层
alfresco/web-api-application-context.xml
打开它可以看到它引入了 alfresco/web-api-config.xml & alfresco/extension/web-api-config-custom.xml
web service 层
web-services-application-context.xml
刚开始找这个文件时,居然没有找到,怪事!not exist???why?
于是后来才发现这个文件是在 remote-api.jar 包里,晕,不是很好的做法啊。
bean 配置定义关键的文件
alfresco/application-context.xml
    < import resource =" classpath:alfresco/core-services-context.xml " />
    < import resource =" classpath:alfresco/public-services-context.xml " />
    < import resource =" classpath:alfresco/model-specific-services-context.xml " />
    < import resource =" classpath:alfresco/action-services-context.xml " />
    < import resource =" classpath:alfresco/rule-services-context.xml " />
    < import resource =" classpath:alfresco/node-services-context.xml " />
    < import resource =" classpath:alfresco/scheduled-jobs-context.xml " />
    < import resource =" classpath:alfresco/network-protocol-context.xml " />
    < import resource =" classpath:alfresco/content-services-context.xml " />
    < import resource =" classpath:alfresco/hibernate-context.xml " />
    < import resource =" classpath:alfresco/ownable-services-context.xml " />
    < import resource =" classpath:alfresco/template-services-context.xml " />
    < import resource =" classpath:alfresco/script-services-context.xml " />
    < import resource =" classpath:alfresco/index-recovery-context.xml " />
    < import resource =" classpath:alfresco/authority-services-context.xml " />
    < import resource =" classpath:alfresco/authentication-services-context.xml " />
    < import resource =" classpath:alfresco/policy-context.xml " />
    < import resource =" classpath:alfresco/import-export-context.xml " />
    < import resource =" classpath:alfresco/bootstrap-context.xml " />
    < import resource =" classpath:alfresco/workflow-context.xml " />
    < import resource =" classpath:alfresco/jcr-api-context.xml " />
    < import resource =" classpath:alfresco/avm-services-context.xml " />
    < import resource =" classpath:alfresco/audit-services-context.xml " />
    < import resource =" classpath*:alfresco/patch/*-context.xml " />
    < import resource =" classpath*:alfresco/domain/*-context.xml " />
 
    <!--
         Import all modules and related components.
         Extensions are explicitly imported after this so that the default
         mechanism can still be used to override module-specific beans.
    -->
    < import resource =" classpath*:alfresco/module-context.xml " />
 
    <!--
         Import of general extensions and bean overrides.
 
         To give developers final control over the tuning
         of their own local build, the dev-context.xml file
         is processed last (note: dev-context.xml isn't
         part of the source tree itself). 
        
         For details, see:
         http://wiki.alfresco.com/wiki/Developer_Runtime_Configuration
    -->
    < import resource =" classpath*:alfresco/extension/*-context.xml "/>
    < import resource =" classpath*:alfresco/extension/dev-context.xml " />
 
可以看到分层次地进行加载不同的 bean ,并且在后面提供可扩展的 bean 定义的引入,方便进行扩展,而不需要更变这个配置文件
 
继续一个个往下看,并把一些重要的 bean 配置拿出来:
core-services-context.xml 核心 bean 的配置
看到配置了 JMX 的服务
<!-- Custom MBeanServer -->
< bean id =" alfrescoMBeanServer " class =" org.springframework.jmx.support.MBeanServerFactoryBean "/>
 
< bean id =" registry "    class =" org.springframework.remoting.rmi.RmiRegistryFactoryBean ">
    < property name =" port " value =" ${avm.remote.port} "/>
</ bean >
<!-- MBeanServer Connector (registers itself with custom alfrescoMBeanServer) -->
< bean id =" serverConnector "
      class =" org.springframework.jmx.support.ConnectorServerFactoryBean "
      depends-on =" registry ">
 
    < property name =" server "       ref =" alfrescoMBeanServer "/>
    < property name =" objectName "  value =" connector:name=rmi "/>
    < property name =" serviceUrl "  value =" service:jmx:rmi://localhost/jndi/rmi://localhost:${avm.remote.port}/alfresco/jmxrmi " />
 
    < property name =" environment ">
        < map >
            <!-- The following keys are only valid when sun jmx is used -->
            < entry key =" jmx.remote.x.password.file " value =" ${alfresco.jmx.dir}/alfresco-jmxrmi.password "/>
            < entry key =" jmx.remote.x.access.file "    value =" ${alfresco.jmx.dir}/alfresco-jmxrmi.access "/>
        </ map >
    </ property >
</ bean >
<!-- MBeans registered with alfrescoMBeanServer -->
< bean id =" VirtServerRegistry "
      class =" org.alfresco.mbeans.VirtServerRegistry "
      init-method =" initialize " >
 
JMX 服务暴露
< bean id =" exporter " class
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值