Java内容仓库
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
立足 JSRቤተ መጻሕፍቲ ባይዱ风险
向XML格式转化
Java内容仓库在CMS中的应用
JSR-170的应用前景 尽管JSR-170 已经于2005 年5月完成,Java内容仓库的工 作并没有终止。JSR-283是JSR170的后继版本,将聚焦于功能 增强,如远程支持,客户端/服 务器协议映射和扩展内容模型 的能力。同时还存在着一些JSR 之外的想法和项目:绑定/映射 框架,它可以将java 类转换为 一个JSR 树,反之亦然(类似 ORM,后端用Java 内容仓库替 代数据库),建构于JSR之上的 WebDAV 服务器等。
Spring事务基础设施
Java内容仓库
集成Java内容仓库和Spring
TransactionAwareRepository
对于要求普通JCR代码的应用程序, JCR模块允许用直接使用JCR API 的代码,透明地使用事务驱动会话。 此时,可以使用 TransactionAwareRepository,它 有一个参数是JcrSessionFactory。 这样,在使用Session.login()(它 接收定义在JcrSessionFactory中 的参数)创建任何新会话时,如果 发现有线程绑定的会话,就将返回 它。注意:如果使用事务,JCR会 话就是事务性的,否则你必须手动 设置属性allowNonTxRepository为 true,配置 驱动事务会话
JAVA内容仓库简介
整棵树具有单根结构。 从根开始,内容元素的定 位采用UNIX文件系统风格 ,相对定位符也是可用的 。每个属性有且仅有一个 父节点,不能有子元素。 每个节点可以有一个或多 个父节点(根节点无父节 点),也可以有任意多个 子节点或属性
JAVA内容仓库简介
Content Repository for Java Technology规范是在 Java Community Process 中作为 JSR-170开发的,它的 目标是满足这些行业的需求。该规范在 javax.jcr 名称 空间中提供了统一的 API ,允许以厂商中立的方式访问 任何符合规范的仓库实现。
Java内容仓库在CMS中的应用
java内容仓库存储结构
通Java内容仓库使用“树形结构”保存信息,树由节点和属性组成。 如图所示,圆形代表节点,方形代表属性。一个节点有且仅有一个父亲, 有任意数目的孩子(子节点)和任意数目的属性。一个属性有且只有一个 父亲(它也是节点),它没有子节点,由一个名字和一个或多个值组成.
基于XML与JAVA内库和数据库的 双向映射
李思静
————————
没有做不到,只有想不到
基于XML与JAVA内库和数据库的双向映射
什么是XML
XML是一种用于描 述数据的与平台无 关的语言。.
允许任何程序员在 自己选择的语言中 使用这些协议和对 象模型,从而为 XML 的使用者提 供了巨大的开发潜 力。
JAVA内容仓库的使用
JAVA内容仓库的三种模式
模式一 模式二 模式三
将 JackRabbit(内 容管理库) 作为应 用程序的一部分, 这意味着将所有 jar 包放入应用程 序 classpath 。
将 JackRabbit 建 立为容器级,对容 器内所有应用程序 可用,通过 JNDI 访问,就像一个数 据库连接池。
基于XML与JAVA内库和数据库的双向映射
Java内容仓库与关系型数据库的比较 Java内容仓库不仅能够存储海量的 数据文件,同时也能够对相对应的数 据信息以节点属性的方式进行存储, 但对关系型数据的持久化操作麻烦 且不方便;而关系型数据库的优势在 于存储数据信息,能够利用诸如 Hibernate等实现对关系型数据库的 轻量级封装,快速方便地实现对数据 的操作。
Java内容仓库在CMS中的应用
JSR面临的困难和风险问题 JSR在现阶段CMS市场中实现的困 难: 由于市场上的内容仓库缺乏统一的 API,JCP要想在市场中立足,必须采 取两个重要步骤:必须重写CMS应用, 以便通过API请求或者提交内容;必 须建立与通用企业内容存储技术的连 接器或者扩展。 实施JSR带来的风险问题: 采用JSR的CMS厂商可能同样会面对微 软向XML格式转化时遇到的问题:如 果微软开放自己的格式,公司就必须 推进升级周期、满足客户需求,并保 证遵循标准所带来的综合利益,这些 都是有风险的。 重写CMS应 用 存储技术的连 接器或者扩展
Java内容仓库在CMS中的应用
级别 1 提供对仓库的读访问 读访问、 输出XML/SAX、 支持XPATH查询服务 增加和移除、 对属性值的写操作、 从XML/SAX 输入数据。 版本控制、 事务支持、SQL 查询、 内容锁定和监视。
级别 2
在级别1 的基础上 提供写功能
可选级别
五种附加功能
Java内容仓库在CMS中的应用
设想你通过一个 QueryManager 对工作空间进行 查询。Query返 回包含对节点集 或行集的迭代。
删除一个节点如 同获取会话一样, 找到我们想删除 的节点,告诉它 删除自己,然后 保存会话。
JAVA内容仓库的使用
A API处理层级型数据。 B C 它将层级结构提升为接口。
并能定义对存储数据的约束。
基于XML与JAVA内库和数据库的双向映射
Java内容仓库与XML的优势
1
它促进移植性的方式 之一就是使用标准的 XML 导入和导出特 性。通过使用这些工 具,符合规范的仓库 内容可以很容易地转 移到另一个符合规范 的仓库中。
2
可以用传统的 XML解析 工具实现对由内容仓库 导出的XML文件进行数 据添加、删除数据信息 等持久化操作,并将修改 后的XML文件导入到仓 库中,实现对内容仓库的 操作。
我为什么使用 JCR?它比数据 库和文件系统好 吗?
JAVA内容仓库的使用
OK,我决定使用JCR,我将它部署在哪儿? 使用适合你程序的 方法。因为每个应 用程序所面对的问 题都不同,你需要 将你的应用程序和 JCR的生命周期进行 分析对比,对性能 影响进行分析,选 择一个最优的。
嵌入程序
共享资源
单独服务器
可
选
最大化代码重用
Java内容仓库在CMS中的应用
史勋
————————
没有做不到,只有想不到
Java内容仓库在CMS中的应用
java内容仓库模型原理
而我们开发该应用系统时则完全不用关心数据是如何存储的, 它可以存储于关系数据库,文件系统,xml甚至远程内容仓库—— 只要操作的内容仓库支持JSR-170。目前只有文件系统可以直接支持 JSR-170,其他内容仓库则需要JCR连接桥来支持。
集成Java内容仓库和Spring
配置仓库和SessionFactory
RepositoryFactoryBean类配置 Jackrabbit,它需要JackRabbit 的配置文件和主目录。注意, RepositoryFactoryBean在使用 本地文件系统时特别有用;对 于服务器环境,仓库可能被注 册在JNDI中,此时可以使用 JndiObjectFactoryBean帮助类 (Spring分发包的一部分)
JAVA内容仓库的使用
杨亭
————————
没有做不到,只有想不到
JAVA内容仓库的使用
JavaContentRepository 规范 (JSR-170)聚焦内容 服务,不仅管理数据,也 提供版本管理、全文检索、 访问控制、内容分类和内 容事件等功能。可以用类 似JDBC的方法访问内容仓 库:建立连接,打开会话, 用会话访问一组数据,最 后关闭会话。
运行一个 JackRabbit 服务器 实例,客户端程序 通过网络与服务器 通信。
谢谢!
杨志鹏
————————
没有做不到,只有想不到
JAVA内容仓库简介
Java Content Repository
Java内容仓库
JCR
JAVA内容仓库简介
JCR规范
读 写 删除 搜索 内容元素序列化
事务管理 版本控制 内容观察 内容锁定 访问控制
JAVA内容仓库简介
• JCR定义的 内容仓库模 型是一个树 状结构,树 上的元素( Item)分为 两类:节点 (node)和 属性( property) 。
集成Java内容仓库和Spring
可选特性支持侦测
为了最大化代码重用,但 仍然允许插入可选特性,如 用于不同JCR实现的事务支 持,JCR模块使用 SessionHolder接口(前面 已经提到),同时还有 SessionHolderProvider和 SessionHolderProviderMan ager接口。用户一般不用与 它们打交道,因为它们是框 架内部使用的;但是,它们 代表了JCR模块主要的扩展 点。
集成Java内容仓库和Spring
张磊
————————
没有做不到,只有想不到
集成Java内容仓库和Spring
JCR模块的主要目标是:以一种类似Spring主分发 包中ORM包的方式,简化使用JSR API进行开发
JCRTemplate,允许执行JcrCallback和异常处理(将需检查的JCR 异常转换成不需检查的Spring DAO异常)。 SessionFactory,用来统一Repository,Credentials和Workspace 接口,允许自动注册监听器和自定义名字空间。 OpenSessionInView拦截器和过滤器允许每个线程跨不同组件使用 同一会话。
JAVA内容仓库
Java内容仓库简介 杨志鹏 集成Java内容仓库和Spring 张磊 Java内容仓库在CMS中的应用 史勋 基于xml实现java内容仓库和关系型数据库 的双向映射 李思靖 • Java内容仓库的使用 杨亭 • • • •
————————
没有做不到,只有想不到
JAVA内容仓库简介
JcrTemplate
JRC
集成Java内容仓库和Spring
支持事务
使用JCR模块的一个好 处就是能将Spring事务 基础设施(包括声明性 和编程性)应用于 Java内容仓库。JSR 170将事务支持视为可 选特性,并没有强制一 个标准的方式来暴露事 务钩子,因此每个实现 可以选择不同的方法。
JcakRabbit
Repository FactoryBean
集成Java内容仓库和Spring
JcrTemplate
JcrTemplate是JCR模块的 核心类之一,它提供了与JCR 会话一起工作的方便方法,将 调用者从必须处理的打开和关 闭会话、事务回滚(如果底层 仓库提供)、以及处理其它特 性中的异常等工作中解放出来 模板定义非常简单,类似 来自Spring框架的其它模板类 ,如HibernateTemplate。
建立连接
会话访问
关闭会话
JAVA内容仓库的使用
JAVA内容仓库基本操作
读
写
查
删
我们将生成一个 节点命名为 “/foo”,设个属 性,“bar”。我 们查看“/foo”是 否存在,如果存 在,则显示属性 “bar”的值。
获取的会话根节 点添加一个子节 点,为子节点添 加数据,如果会 话发生了数据变 更,保存它,然 后注销会话。
使用java内容仓库所带来的好处
提供统一接口,解决了 CMS领域内容仓库API无法兼 容的问题 JSR-170提供了一 组统一接口,打破了传统CMS 领域技术上的分立局面,降 低了CMS系统的复杂度,增强 了可维护性。使用JSR-170, 对于开发者来说,无需了解 厂家的仓库特定的API,只需 要该仓库兼容JSR-170就可以 通过JSR-170访问。
基于XML与JAVA内库和数据库的双向映射
XML与关系型数据库之间的映射机制
模板驱动映射方式将命令语句嵌入到 XML模板中,让数据传输的 中间件执行该模板,获得执行结果并替换模板中对应的命令语句 部分,从而得到所需要的XML文档。
模型驱动映射方式通过在XML文档结构和数据库结构之间建立预 定义的映射关系模型,形成一个相对稳定的转换机制,在XML层次 形成可共享的数据结构,能够更方便地实现数据的双向转换,而且 系统扩展也比较容易。该方式应用较广。