快速业务通道

Java Content Repository API简介 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
对象

String configFile = "repository.xml"; String repHomeDir = "repository"; Hashtable env = new Hashtable();    env.put(Context.INITIAL_CONTEXT_FACTORY,     "org.apache.jackrabbit.core.jndi" +     ".provider.DummyInitialContextFactory"); env.put(Context.PROVIDER_URL, "localhost"); InitialContext ctx = new InitialContext(env); RegistryHelper.registerRepository(ctx,    "repo",    configFile,    repHomeDir,    true); Repository r = (Repository) ctx.lookup("repo");

Java Content Repository API简介(5)

时间:2011-06-25 IBM Titus Barik

接下来,用 SimpleCredentials 获得 Session 对象。在这个实现中,SimpleCredentials 接受所有用户名。替代的 JCR 实现可以提供更复杂的认证机制,可以连接到 LDAP 服务器或外部数据库来提供凭据信息。(身份验证和访问控制的完整功能超出了本文的范围。要获得有关的更多信息,请参阅 JSR-170 规范的 6.9 小节。)

Session 对象为程序员提供了一个临时的存储层,它非常像传统的对象关系映射工具中可以看到的层,而且还可以将它看作到特定工作区的连接。它允许客户访问绑定到这个会话的任何节点或属性。通过会话,可以得到工作区,再从工作区得到根节点。所有这些步骤都是在清单 5 的简短代码片段中完成的:

清单 5. 获得工作区和根节点

SimpleCredentials cred = new SimpleCredentials("userid",    "".toCharArray()); Session session = r.login(cred, null); Workspace ws = session.getWorkspace(); Node rn = session.getRootNode();

使用会话、工作区和根节点引用,现在可以通过不同的抽象层访问仓库的特性。最后,为了验证仓库已经成功获得初始化,可以用 rn.getPrimaryNodeType().getName() 输出根节点的名称。这应当形成以下输出:

rep:root 

因为正在使用 JAAS,所以请记得将 -Djava.security.auth.login.config==jaas.config. 以 Java JVM 参数的形式包含进来。

JCRWiki 名称空间

在这个练习中,所有的 JCRWiki 内容都放在 wiki 名称空间下。为了让仓库识别这个名称空间,必须在初始化时注册名称空间,如下所示:

ws.getNamespaceRegistry()。registerNamespace    ("wiki", "http://www.barik.net/wiki/1.0");

恭喜!仓库的手工配置现在完成了。

自动配置

Jackrabbit 实现还提供了一个 TransientRepository 类,这个类来自其核心 API,可以在启动第一个会话时自动初始化内容仓库,并在最后一个会话关闭时停止使用仓库。对于简单的独立应用程序,使用 TransientRepository 可以极大地简化仓库的配置,但要以 JSR-170 的移植性作为代价。

TransientRepository 自动创建 repository.xml 和仓库文件夹。它还在内部提供了处理身份验证和安全性的 SimpleAccessManager。

自动配置需要使用如图 6 所示的初始化 import 语句。与手工配置相比,所有的 JNDI 引用都被删除了。在 RegistryHelper 的位置换上了 TransientRepository。

清单 6. 自动配置的 import 语句

import org.apache.jackrabbit.core.TransientRepository import javax.jcr.*; import javax.jcr.query.*; import javax.jcr.version.*; import java.util.Calendar; import java.io.*; import sun.net.www.MimeTable;

Java Content Repository API简介(6)

时间:2011-06-25 IBM Titus Barik

因为 TransientRepository 为您执行了初始化,所以获得仓库非常简

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号