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以前的原文件。
【 点此查看更多 】