分享

实现Jetspeed2的PSML数据库存储-Focus中国软件-搜狐博客

 zengdongping 2008-01-28

2007-07-06 | 实现Jetspeed2的PSML数据库存储

标签: Jetspeed2  PSML 

Jetspeed2的PSML(Page Structure Markup Language)支持XML和数据库存储两种模式,系统缺省采用XML方式,但当系统中PSML数量太大是,采用XML的模式显然有点不合适,这个时候可以采用数据库模式。

需要做的工作有:

1、修改Spring Bean的配置

  • 打开文件jetspeed\WEB-INF\assembly\page-manager.xml
  • 将bean-id为org.apache.jetspeed.page.PageManager的bean配置删除
  • 将一下代码添加进去

  <!-- Page Manager -->
  <bean id="org.apache.jetspeed.page.PageManagerImpl"
        name="pageManagerImpl"
        init-method="init"
        class="org.apache.jetspeed.page.impl.DatabasePageManager">
      <!-- OJB configuration file resource path -->
      <constructor-arg index="0"><value>JETSPEED-INF/ojb/page-manager-repository.xml</value></constructor-arg>      
      <!-- folder/page/link cache size, default=128, min=128 -->
      <constructor-arg index="1"><value>128</value></constructor-arg>
      <!-- folder/page/link cache expires seconds, default=150, infinite=0, min=30 -->
      <constructor-arg index="2"><value>30</value></constructor-arg>
      <!-- permissions security enabled flag, default=false -->
      <constructor-arg index="3"><value>false</value></constructor-arg>
      <!-- constraints security enabled flag, default=true -->
      <constructor-arg index="4"><value>true</value></constructor-arg>
  </bean>

  <!-- Transaction Proxying -->
  <bean id="org.apache.jetspeed.page.PageManager" name="pageManager" parent="baseTransactionProxy">
      <property name="proxyInterfaces">
          <value>org.apache.jetspeed.page.PageManager</value>
      </property>
      <property name="target">
          <ref bean="pageManagerImpl" />
      </property>
  </bean>

2、启动Server,系统原有目录jetspeed\WEB-INF\pages下的PSML不再生效,hahaha...

当你输入http://127.0.0.1:8080/jetspeed 的时候,页面给你的提示却是“ROOT Folder No Found”,是不是哪里没有配置好?不是的,配置是正确的,系统运行也是正常的,原因是你没有把系统初始的PSML导入到你的数据库中,你可以打开数据库,表page是空的,没有任何数据,当然给你错误了,那怎么办呢,怎么接着往下看:

3、讲系统初始PSML导入到数据库

jetspeed提供PSML的XML与数据库互转的工具,我这里指讲解从XML到数据库的过程:

  • jetspeed提供了一个类org.apache.jetspeed.page.PageImporter,并提供了main方法,你只要运行它既可,运行前,现把一下这些文件放到你的classpath下

  • 修改配置文件import-page-manager.xml,将PsmlDocumentHandler、LinkDocumentHandler、FolderMetaDataDocumentHandler、PageSecurityDocumentHandler、FolderHandler这些Bean的构造参数中“pages路径”指向你真实的路径下
  • 修改配置文件repository-datasource-spring.xml,配置你的数据源
  • 运行PageImporter,会提示已经导入的Folder以及Page等信息

4、启动Server,访问http://127.0.0.1:8080/jetspeed,你可以看到与XML同样的效果。

 

附录

与数据库存储PSML相关的表

  1. folder 文件夹,对应于pages下面的各个文件夹
  2. folder_constraint 文件夹权限,对应于folder.metadata的security-constraints owner
  3. folder_constraint_ref 文件夹访问权限,对应于folder.metadata的security-constraints security-constraints-ref
  4. folder_metadata 文件夹的元数据,常用于文件夹名称的国际化
  5. folder_menu 文件夹的菜单,对应于folder.metadata的menu
  6. folder_menu_metadata 菜单的元数据,常用于菜单名称的国际化
  7. page页 面表,即PSML
  8. fragment 页面的Portlet-entity表
  9. link 链接表

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多