Alfresco 2.0 解读 - 简单就是美! - CSDNBlog
来源:百度文库 编辑:神马文学网 时间:2024/06/13 12:27:14
一、介绍Source: http://blog.csdn.net/YuLimin/archive/2007/05/15/1609437.aspx
http://www.alfresco.com 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 更多的技术规范详见: http://www.alfresco.com/products/ecm/specifications/
二、配置解读1、从web.xml开始入手其它的略过,在 web.xml 中可以看到加载了如下 Spring 配置文件 contextConfigLocation 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 Spring config file locations web client 层alfresco/web-client-application-context.xml打开它可以看到它引入了所有的 alfresco/web-client*.xml & alfresco/extension/web-client*.xml & jar:*!/META-INF/web-client*.xmlweb api 层alfresco/web-api-application-context.xml打开它可以看到它引入了 alfresco/web-api-config.xml & alfresco/extension/web-api-config-custom.xmlweb service 层web-services-application-context.xml刚开始找这个文件时,居然没有找到,怪事!not exist???why?于是后来才发现这个文件是在 remote-api.jar 包里,晕,不是很好的做法啊。bean 配置定义关键的文件alfresco/application-context.xml 可以看到分层次地进行加载不同的 bean ,并且在后面提供可扩展的 bean 定义的引入,方便进行扩展,而不需要更变这个配置文件 继续一个个往下看,并把一些重要的 bean 配置拿出来:core-services-context.xml 核心 bean 的配置看到配置了 JMX 的服务 JMX 服务暴露 同时暴露了 RMI 的服务RMI org.alfresco.service.cmr.remote.RepoRemoteTransport repo ${avm.remote.port} 验证 bean 配置,也是同时暴露了 RMI 的服务authentication-services-context.xml org.alfresco.service.cmr.security.AuthenticationService authentication ${avm.remote.port} avm 里也暴露了 RMI 的服务avm-services-context.xml org.alfresco.service.cmr.remote.AVMRemoteTransport avm ${avm.remote.port} org.alfresco.service.cmr.remote.AVMSyncServiceTransport avmsync ${avm.remote.port} 通过上面的 JMX 与 RMI 暴露在不同的配置文件里可以看到,如果我要去掉 JMX 或 RMI 服务的话,需要修改 N 个的配置文件,实在是麻烦。建议要二次开发时根据需要进行整理,合并到一个文件里进行暴露即可,或者没有需要的话就直接 delete 掉这些:) 而且这个 JMX RMI 服务的暴露,导致你不能仅重启应用就可以,而非得重启整个应用服务器才行,要不然会报服务已启动,即默认的端口50500被占用了,而整个应用启动不了,麻烦。除非你在重启应用之前再去修改一下配置文件里的端口号,呵呵。 不过,最终的解决办法是象我在 Jmx4Log4J 里那样自己去再封装一个获取端口号的类,发现有人用了,就找下一个:)这样就OK了。 core-services-context.xml数据库连接池用的居然是 org.apache.commons.dbcp.BasicDataSource ,大家自己改吧 c3p0 等等 邮件 Lucene 索引和搜索 API 锁 版本控制 数据库 拷贝 检出 / 检入 全文搜索 Lucene 索引文件备份 public-services-context.xml 当中引入了 public-services-security-context.xml 安全认证相关使用的是 Acegi 组件,当中引入了 cache-context.xml Cache 相关的,使用的是 EHCache classpath:alfresco/ehcache-transactional.xml public-services-context.xml 基本上服务都从这里注入并从中获取,树结构,当中有Spring Bean Factory model-specific-services-context.xml action-services-context.xml Action 相关的用 Thread local containing the current action chain rule-services-context.xml 规则、触发规则服务node-services-context.xml 节点相关服务scheduled-jobs-context.xml 定时任务 true classpath:alfresco/domain/quartz.properties DefaultScheduler # Quartz thread settings 默认的线程优先级为 3org.quartz.threadPool.threadPriority=3network-protocol-context.xml 网络相关的服务需要相关的文件配置信息在 file-servers.xml 中content-services-context.xml 内容相关的服务MIME OpenOffice PDF Mail MP3 ...hibernate-context.xml Hibernate 的映射配置文件 true 不同的Cache策略 ownable-services-context.xmlOwnership service support. Use in permissions framework as dynamic authority. template-services-context.xml 模板引擎 freemarkerscript-services-context.xml 脚本引擎 Rhino JavaScript engine.index-recovery-context.xml 索引校验与恢复 ${index.recovery.mode} authority-services-context.xml 授权服务 admin administrator authentication-services-context.xml 验证 Acegipolicy-context.xml 策略服务import-export-context.xml 导入导出服务bootstrap-context.xml 系统启动的初始化工作如:数据库、AVM、文件服务器、FTP、NFS、CIFS等等。。。Repository Bootstrap Sequence. workflow-context.xml 工作流相关的服务,JBPM jcr-api-context.xml 实现JCR 170相关的API,即1.0版本的APIAlfresco implementation of a JCR Repositoryavm-services-context.xml AVM相关服务,以及一堆的DAO avm-console-context.xml avm-console.properties 默认配置为本地MySQL的数据库# Database specifics.db.driver=org.gjt.mm.mysql.Driverdb.url=jdbc:mysql://127.0.0.1/avmdb.username=rootdb.password=db.pool.initial=4db.pool.max=32# Hibernate propertieshibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialecthibernate.current_session_context_class=threadhibernate.connection.isolation=2hibernate.default_batch_fetch_size=16hibernate.jdbc.batch_versioned_data=truehibernate.cache.use_second_level_cache=truehibernate.hbm2ddl.auto=update# AVM specific properties. audit-services-context.xml 其后在 application-context.xml 还加载了 一堆Patch,呵呵patch-services-context.xml 其它的。。。 module-context.xml 加载其它的模块Bean最后加载一些扩展与二次开发的Bean 同时覆盖掉想覆盖的Bean,后面覆盖前面的,Map嘛。比如: custom-repository-context.xml 里的属性配置、资源配置、事务配置等
三、配置安装时的注意事项1、要将 Alfresco 默认安装使用的数据库HSQL转换为MqSQL的话,只需要删掉三个 HSQL 使用的文件:这三个文件分别是 tomcat/shared/classes/alfresco/extension 目录下的 custom-db-and-data-context.xml custom-db-connection.properties custom-hibernate-dialect.properties为了产生一个MySQL数据库,执行\extra\database\mysql ,运行 db_setup.bat 文件,或者打开文件,手工输入命令也一样。就会产生一个与一个使用者一起命名 alfresco 的 MySQL 数据库帐户和一个 alfresco 的密码。 2、国际化alfresco的文件路径为: WEB-INF\classes\alfresco\messages 下面包含了一堆文件,一个个去国际化吧,当然用插件、Native2ASCII或配合ANT都可以。Eclipse 的 PropertiesEditor 插件不错。 3、无论从一种数据库切换到另一种数据库,都要记得把 repository.properties 配置文件里 dir.root 所在的目录下的文件删除干净,要不然会出问题。比如:Caused by: org.alfresco.repo.search.SearcherException: More than one root node in index: 2#dir.root=./alf_data 4、将 Win32NetBIOS.dll 拷贝到 %JAVA_HOME%\jre\bin\ 目录下 或者 %TOMCAT_HOME%\bin 目录下 5、不要 ScriptService 的话,可以在 public-services-context.xml 中注释掉 ScriptService 和 ScriptService_transaction 6、查看 Hibernate 的 SQL 修改 log4j.properties 在 log4j.logger.org.hibernate 下增加一行,即可 log4j.logger.org.hibernate.SQL=debug 7、发现启动报 "Ensure that the 'dir.root' property is pointing to the correct data location." ... 之类的错误时可以在 repository.properties 配置文件里将 strict 设置为 false# Change the failure behaviour of the configuration checkersystem.bootstrap.config_check.strict=false不过,设置后很有可能可以启动,但是仍是登录不了之类的,要小心。如果用的是HSQL的话,最好把 alf_data\hsql_data 下面的 alfresco.properties 和 alfresco.script 恢复成原来的,并删除其它的文件,再重启就可以了。 8、第 7 条,仍报错 ERROR [repo.admin.ConfigurationChecker] CONTENT INTEGRITY ERROR: Indexes not found for 5 stores. 的话,设置为全部索引,并按第 3 条所说的删除文件,或者直接就换个文件夹,不要用默认的文件夹名称,并删除数据库的内容(所有的表以及HIBERNATE_SEQUENCE),并重启即可。在 repository.properties 中设置index.recovery.mode=FULL 9、如果是强行关闭掉Tomcat之类后,马上启动Tomcat的话,有可能会报错IOException while loading persisted sessions: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: org.alfresco.web.ui.common.component.UIListItem过一会儿再启动就没有问题了。 10、Alfresco 2.0 需要 JDK 1.5_07 以上的版本,这个也要注意。 11、用户名大小字问题,可以在 repository.properties 进行设置# Are user names case sensitive?user.name.caseSensitive=true设置为 true ,大小写敏感,默认为 false 12、关闭FTP服务,在 bootstrap-context.xml 配置中注释掉它就可以了。file-servers.xml里保存相关的配置信息或者也可以在 file-servers.xml 文件中设置 13、关闭CIFS服务在 file-servers.xml 文件中设置 即可。四、数据库模型可以看附件,有包含JBPM的与不包含JBMP的两个数据库五、相关资料Java Content Repository API 简介 学习 JSR-170 如何使构建 CMA 变得轻而易举http://www.ibm.com/developerworks/cn/java/j-jcr/ 国外厂商纷纷投入开源界 自述其中原因,此文重点介绍 Alfresco 的相关信息。http://dotnet.csdn.net/n/20060206/86350.html 六、开发与代码分析1、换 Web Services 的实现方式由 AXIS 换到 XFire Codehaus XFire is a next-generation java SOAP framework. Codehaus XFire makes service oriented development approachable through its easy to use API and support for standards. It is also highly performant since it is built on a low memory StAX based model. ==============================================================代码分析有时间再继续整理上来 Category由id,title,description组成 public Category(org.alfresco.webservice.types.Reference id,java.lang.String title,java.lang.String description) Classification public Classification(java.lang.String classification,org.alfresco.webservice.types.Category rootCategory,java.lang.String title,java.lang.String description) Reference public Reference(org.alfresco.webservice.types.Store store,java.lang.String uuid,java.lang.String path) AppliedCategory public AppliedCategory(java.lang.String classification,org.alfresco.webservice.types.Reference[] categories) ClassDefinition public ClassDefinition(java.lang.String name,java.lang.String title,java.lang.String description,java.lang.String superClass,boolean isAspect,org.alfresco.webservice.types.PropertyDefinition[] properties,org.alfresco.webservice.types.AssociationDefinition[] associations)
http://www.alfresco.com 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 更多的技术规范详见: http://www.alfresco.com/products/ecm/specifications/
二、配置解读1、从web.xml开始入手其它的略过,在 web.xml 中可以看到加载了如下 Spring 配置文件
三、配置安装时的注意事项1、要将 Alfresco 默认安装使用的数据库HSQL转换为MqSQL的话,只需要删掉三个 HSQL 使用的文件:这三个文件分别是 tomcat/shared/classes/alfresco/extension 目录下的 custom-db-and-data-context.xml custom-db-connection.properties custom-hibernate-dialect.properties为了产生一个MySQL数据库,执行
附件下载:
1、Alfresco Database Model
2、Alfresco2.0
Alfresco 2.0 解读 - 简单就是美! - CSDNBlog
Alfresco 2.0 解读 - 超越黎明 - CSDNBlog
简单就是美
FENNIE简单就是美
有时候,美就是这么简单
有时候,美就是这么简单
FENNIE简单就是美[2]
简单就是美-Java正则表达式详解
简单就是美 - gchflying - 网易博客
CG精品-简单就是美
CG精品-简单就是美
CG精品-简单就是美[32P]
最美的教育就是最简单的教育
最美的教育就是最简单的教育
简单就是美--分型。同级别分解。
简单就是美-缠论中枢图解2
D大兵 ? 程序员需知——简单就是美
程序员应知——简单就是美
计算基础正在发生根本变革——解读“计算2.0” - 孟岩 - CSDNBlog
Alfresco and Plone
Alfresco如何禁用下载
简单解读汽车政策
简单,就是快乐
幸福就是简单