liferay文檔庫從新部署後沒法下載問題

【本文來自尚觀知識庫】

liferay的文檔庫的portlet用起來很方便,可是發現,當你把這個tomcat從新部署,或者把這個tomcat移植到其餘機器上的時候,文檔庫裏面之前上傳上來的文檔,雖然信息還在,可是沒法下載了。 php

緣由是,liferay文檔庫,默認的配置是把文檔的數據存儲到了你tomcat所在服務器的${user.home}/liferay下面的jackrabbit文件夾裏面了,因此在從新部署tomcat 或者將tomcat移植到其餘服務器上的時候,不能下載了。 node

解決辦法: mysql

    1。在portal.properties裏面將resource.repositories.root=${user.home}/liferay的${user.home}修改爲你的tomcat路徑下。不要將這些信息存儲到你的用戶文件夾下。 sql

   2。將文檔的存儲方式改變成以數據的形式存儲到數據庫中,我以爲這個方法更好一些。這個到${user.home}/liferay/jackrabbit下,修改repository.xml。 數據庫

修改後的文件以下: apache

<?xml version="1.0"?> tomcat

<Repository>
 <!--<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
  <param name="path" value="${rep.home}/repository" />
 </FileSystem>--> 服務器

 <!--
 Database File System (Cluster Configuration) app

 This is sample configuration for mysql persistence that can be used for
 clustering Jackrabbit. For other databases, change the connection,
 credentials, and schema settings.
 --> url

     <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
      <param name="driver" value="com.mysql.jdbc.Driver"/>
      <param name="url" value="jdbc:mysql://localhost/jcr" />
      <param name="user" value="root" />
      <param name="password" value="admin" />
      <param name="schema" value="mysql"/>
      <param name="schemaObjectPrefix" value="J_R_FS_"/>
     </FileSystem>

 <Security appName="Jackrabbit">
  <AccessManager class="org.apache.jackrabbit.core.security.SimpleAccessManager" />
  <LoginModule class="org.apache.jackrabbit.core.security.SimpleLoginModule">
   <param name="anonymousId" value="anonymous" />
  </LoginModule>
 </Security>
 <Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="liferay" />
 <Workspace name="${wsp.name}">
<!--  <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
   <param name="path" value="${wsp.home}" />
  </FileSystem>
  <PersistenceManager class="org.apache.jackrabbit.core.state.xml.XMLPersistenceManager" />
-->
  <!--
  Database File System and Persistence (Cluster Configuration)

  This is sample configuration for mysql persistence that can be used for
  clustering Jackrabbit. For other databases, change the  connection,
  credentials, and schema settings.
  -->

      <PersistenceManager class="org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager">
       <param name="driver" value="com.mysql.jdbc.Driver" />
       <param name="url" value="jdbc:mysql://localhost/jcr" />
       <param name="user" value="root" />
       <param name="password" value="admin" />
       <param name="schema" value="mysql" />
       <param name="schemaObjectPrefix" value="J_PM_${wsp.name}_" />
       <param name="externalBLOBs" value="false" />
      </PersistenceManager>
      <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
       <param name="driver" value="com.mysql.jdbc.Driver"/>
       <param name="url" value="jdbc:mysql://localhost/jcr" />
       <param name="user" value="root" />
       <param name="password" value="admin" />
       <param name="schema" value="mysql"/>
       <param name="schemaObjectPrefix" value="J_FS_${wsp.name}_"/>
      </FileSystem>
 </Workspace>
 <Versioning rootPath="${rep.home}/version">
<!--  <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
   <param name="path" value="${rep.home}/version" />
  </FileSystem>

  <PersistenceManager class="org.apache.jackrabbit.core.state.xml.XMLPersistenceManager" />
-->
  <!--
  Database File System and Persistence (Cluster Configuration)

  This is sample configuration for mysql persistence that can be used for
  clustering Jackrabbit. For other databases, change the connection,
  credentials, and schema settings.
  -->

       <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
        <param name="driver" value="com.mysql.jdbc.Driver"/>
        <param name="url" value="jdbc:mysql://localhost/jcr" />
        <param name="user" value="root" />
        <param name="password" value="admin" />
        <param name="schema" value="mysql"/>
        <param name="schemaObjectPrefix" value="J_V_FS_"/>
       </FileSystem>
       <PersistenceManager class="org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager">
        <param name="driver" value="com.mysql.jdbc.Driver" />
        <param name="url" value="jdbc:mysql://localhost/jcr" />
        <param name="user" value="root" />
        <param name="password" value="admin" />
        <param name="schema" value="mysql" />
        <param name="schemaObjectPrefix" value="J_V_PM_" />
        <param name="externalBLOBs" value="false" />
       </PersistenceManager>
 </Versioning>

 <!--
 Cluster Configuration

 This is sample configuration for mysql persistence that can be used for
 clustering Jackrabbit. For other databases, change the  connection,
 credentials, and schema settings.
 -->

    <!--<Cluster id="node_1" syncDelay="5">
  <Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal">
   <param name="revision" value="${rep.home}/revision"/>
   <param name="driver" value="com.mysql.jdbc.Driver"/>
   <param name="url" value="jdbc:mysql://localhost/jcr"/>
   <param name="user" value=""/>
   <param name="password" value=""/>
   <param name="schema" value="mysql"/>
   <param name="schemaObjectPrefix" value="J_C_"/>
  </Journal>
    </Cluster>-->
</Repository>

注意:鏈接數據庫時候的用戶名和密碼填寫正確,還有數據庫名,若是不想和tomcat用同一個數據庫,那麼就再另外創建一個jcr的數據庫便可,裏面的表會自動生成。

這樣,無論tomcat怎麼從新部署和移植,文檔的數據是存儲到數據庫裏面了,只要數據庫文件還在,何時都能下載。

參考文檔:http://wiki.liferay.com/index.php/Jackrabbit

補充:

     剛纔一個網友告訴我能夠在部署出來以前修改portal源碼的相關配置,這樣第一次部署tomcat生成的repository.xml就是存儲到數據庫的配置了。修改的源碼是portal-impl.jar\com\liferay\portal\jcr\jackrabbit\dependencies\repository.xml  這個就是部署repository.xml以前的原文件。

點此查看更多
相關文章
相關標籤/搜索