jsr170初探

ecm:enterprise content manager(企业内容管理),好像有点意思,就介绍下吧。企业内容应该包括两部分:文档类和元数据。说到ecm,就不得不说Java Content Repository(Java内容仓库),在java体系中,有专门的标准即jsr170,是jcp(Java community process)制定。
一什么是内容仓库?
  1、定义
  JSR-170 是这样定义内容仓库的,内容仓库由一组 workspace(工作空间)组成,这些workspace通常应该包含相似的内容。一个内容仓库有一个到多个 workspace。每个workspace都是一个树状结构,都有一个唯一的树根节点(root node)。树上的item(元素)或者是个node(节点)或者是个property(属性)。每个node都可以有零个到多个子节点和零个到多个子属性。只有根节点没有父节点,其余所有的节点都有一个父节点。property 也必须有一个父节点,但它没有子节点或是子属性,property 是叶子元素。property是真正存储数据的元素。类似于linux下的文件系统,还有点类似于ldap中的数据组织方式(最近看的东西有点杂,分不清了);
  2、级别
   jsr定义了三种级别,依次是:
   Level 1:定义了一个只读的内容仓库。
   Level 2:定义了可写的内容仓库。
   Advanced options:定义实现五种附加功能,版本控制、JTA、SQL查询、清晰的内容锁定和监视。
二、java对内容仓库的支持
    java制定了内容仓库的标准(个人认为是api接口),但没有制定底层的实现技术,即不管持久层采用的什么技术,无论是xml、rdb、文件等方式;
三、jackrabbit的介绍:
    既然java只是制定了实现的接口,没有具体制定实现,下面就介绍一个对jsr170支持很好的项目javarabbit。
   1、内容仓库的目录结构
   D:\workspace\TestJackRabbit
                             ---repository.xml
                             ---repository
                                      ----repository
                                      ----version
                                      ----workspaces
   2、jackrabbit的底层数据存储方式:采用java自带的内嵌数据库derby。
    3、java操作内容库
       a)获得根节点
         Repository r = new TransientRepository();
        Session session = r.login(new SimpleCredentials("userid", "".toCharArray()));
        Workspace ws = session.getWorkspace();
        Node rn = session.getRootNode();
       b)插入数据
       //将内容添加到内容仓库
  Node encyclopedia = rn.addNode("wiki:encyclopedia");
  Node p = encyclopedia.addNode("wiki:entry");
  p.setProperty("wiki:title", new StringValue("rose"));
  p.setProperty("wiki:content", new
     StringValue("A rose is a flowering shrub."));
  p.setProperty("wiki:category",
     new Value[]{
        new StringValue("flower"),
        new StringValue("plant"),
        new StringValue("rose")});

  Node n = encyclopedia.addNode("wiki:entry");
  n.setProperty("wiki:title", new StringValue("Shakespeare"));
  n.setProperty("wiki:content", new
     StringValue("A famous poet who likes roses."));
  n.setProperty("wiki:category", new StringValue("poet"));
  session.save();

   

你可能感兴趣的:(java,数据结构,sql,linux,Derby)