`
Tyler_Zhou
  • 浏览: 217002 次
  • 性别: Icon_minigender_1
  • 来自: 湖北->上海
社区版块
存档分类
最新评论

liferay5.0网站导入导出

EXT 
阅读更多
最近项目蛮忙的也就没有上来看一下,在这个项目中用的是liferay5.0,也没遇到什么问题,觉得没什么

好写的了,只是为了加快项目进度试用了一下他提供的网站导入导出,导出没什么好说的,只是在导入

的过程中失败的概率很高,也许几十次可以成功一次,因为网站比较多十几个如果一个一个做太慢了,

导入失败报的原因基本上都一样,就是违返了主键约束,在liferay中所有的主键都是程序生成的,数据

库中有一个表名counter这就是主键表,
public long increment(String name, int size)
throws SystemException {

if (size < _MINIMUM_INCREMENT_SIZE) {
size = _MINIMUM_INCREMENT_SIZE;
}

CounterRegister register = getCounterRegister(name);

synchronized (register) {
long newValue = register.getCurrentValue() + size;

if (newValue > register.getRangeMax()) {
Session session = null;

try {
session = openSession();

Counter counter = (Counter)session.get(
Counter.class, register.getName(),

LockMode.UPGRADE);

newValue = counter.getCurrentId() + 1;

long rangeMax =
counter.getCurrentId() +

register.getRangeSize();

counter.setCurrentId(rangeMax);

session.save(counter);
session.flush();

register.setCurrentValue(newValue);
register.setRangeMax(rangeMax);
}
catch (Exception e) {
throw HibernateUtil.processException(e);
}
finally {
closeSession(session);
}
}
else {
register.setCurrentValue(newValue);
}
return newValue;
}
}
这是生成主键的代码,先读一次这个表,找到当前主键值,加上一个COUNTER_INCREMENT值,这个值默认

是100,然后修改表中的主键值,以后就不访问这个表了,每次把这个值加一,当超过

register.getRangeMax()值时再次重复这个动作,问题就是在这个地方了,当你的数据少时导入是不会

出错的,当数据很多时,我的一般一个社区会有1000-2000条数据,这样就会去读10次以前的数据库,一

次两次不会出错,多了就会出错,有时候在4,7次重复这个动作时,这个概率不是很稳定,只要有一次

他取的值是最原始的数据了,也就是第一次修改之前的,那么这个ID就发生了得重复了,当运气不好的

时候这个ID用到了同一个表中自然就出错了,Counter counter = (Counter)session.get

(Counter.class, register.getName(),LockMode.UPGRADE);这个总是先到缓存中去取,可是为什么会突

然取到很久以前的一个值就不得而知了,查不出来原因不代表我们不能解决,我们可以修改

COUNTER_INCREMENT值,把他放到足够在来减少访问counter这个动作的次数,在portal-ext.properties

中增加counter.increment=你认为足够大的值。OK,搞定。
1
2
分享到:
评论
2 楼 Tyler_Zhou 2008-08-21  
用心看,或都有雅兴的话你也可以调试一下,就可以看得很清楚了,当然调试之前把默认值设小一点,要不然一百次才能看到效果,我想你也没有这么大的耐心。
1 楼 Kisses99 2008-08-21  
这是生成主键的代码,先读一次这个表,找到当前主键值,加上一个COUNTER_INCREMENT值,这个值默认
是100,然后修改表中的主键值,以后就不访问这个表了,每次把这个值加一,当超过
register.getRangeMax()值时再次重复这个动作,
---------------------
我怎么觉得你讲的逻辑有问题

相关推荐

    sql Server liferay 的数据导入.

    ### SQL Server Liferay 数据导入详解 #### 一、概述 SQL Server Liferay 数据导入是指将Liferay中的数据迁移到SQL Server数据库的过程。这对于那些希望利用SQL Server的强大功能和稳定性来支持Liferay应用的企业来...

    liferay portal模板开发文档

    Liferay Portal 是一个开源的企业级内容管理系统,主要用于构建企业门户和社区网站。Liferay Portal 提供了强大的功能,如用户管理、权限控制、工作流等,并且支持高度定制化。通过创建或修改模板,我们可以实现对...

    Liferay_Portal_6.1源码导入到eclipse

    "Liferay Portal 6.1 源码导入到 Eclipse" Liferay Portal 是一个基于 Java 的开源门户平台,提供了丰富的功能和插件,可以满足企业级门户网站的需求。将 Liferay Portal 6.1 源码导入到 Eclipse,以便更好地理解和...

    liferay-development-documentation-5.0.pdf

    ### Liferay Development Documentation 5.0 - 关键知识点解析 #### 概览 《Liferay开发文档5.0》是一本全面介绍如何在Liferay企业门户平台上进行开发的专业指南。该文档不仅为初学者提供了快速入门的方法,还深入...

    Liferay Portal 5 New Features.pdf

    ### Liferay Portal 5.0新特性解析 #### 引言 随着技术的不断发展与进步,企业对于协作工具的需求日益增长。Liferay Portal 5.0作为一款领先的企业级开源门户解决方案,在此版本中引入了多项增强功能,尤其是其...

    liferay门户网站管理员指导手册

    ### Liferay门户网站管理员指导手册知识点概述 #### 一、Liferay Portal简介 Liferay Portal是一款功能全面的企业级门户平台,提供了强大的门户管理功能,适用于各种企业和机构。它不仅支持多种应用和服务集成,还...

    liferay快速入门quickstart

    Liferay Portal是一款功能强大且灵活的企业级门户平台,它基于Java技术,遵循JSR-168标准,提供了丰富的特性来满足企业内外部网站的需求。Liferay Portal 4.0版本作为一款成熟的解决方案,尤其在用户管理、内容管理...

    liferay-user-importer

    《Liferay用户导入工具详解》 在企业级的数字化运营中,用户管理是核心的一环。Liferay作为一款强大的...在实际使用中,结合Liferay的其他管理功能,如用户导出、权限设置等,可以构建出更加完善的企业用户管理体系。

    TongWeb5.0快速使用手册

    - 该章节详细介绍了如何在TongWeb5.0平台上部署liferay应用,包括但不限于应用包准备、数据库导入、配置调整、具体部署步骤及后期测试等。 - 针对liferay的特殊配置需求进行了详细阐述,如JAAS配置、特定的TongWeb...

    Liferay Portal Liferay IDE

    Liferay Portal Liferay IDE

    liferay详细讲解 liferay项目完全讲解

    Liferay是一款开源的企业级门户平台,它提供了丰富的功能和高度可定制性,广泛应用于构建企业网站、内部系统、协作平台等。在这个“liferay详细讲解 liferay项目完全讲解”的资料包中,我们可以期待深入了解到关于...

    MyEclipse8+Liferay开发环境搭建

    MyEclipse8+Liferay开发环境搭建

    liferay扩展环境 liferay ext

    标题 "Liferay扩展环境 Liferay Ext" 涉及到的是Liferay门户平台的一个关键概念,Liferay Ext是用于扩展和定制Liferay功能的核心工具。Liferay是一个开源的企业级内容管理平台,它允许用户根据需求构建自定义的数字...

    liferay6.06

    4. 导入Liferay Portal源码: 在Eclipse中导入源码,通过项目管理器进行组织和编译,便于进行代码调试和修改。 5. 配置开发环境参数: 设置Java SDK路径,Liferay运行所需的库,以及ANT构建工具,确保开发环境的...

    liferay环境的搭建

    ### Liferay环境搭建详解 #### 一、简介 Liferay是一款功能强大的开源企业级门户平台,主要用于构建企业级Web应用程序和服务。本文档旨在详细介绍如何利用Eclipse集成开发环境(IDE)来搭建Liferay开发环境,并...

    Liferay 6 入门教程

    Liferay是一款开源的企业级门户平台,广泛用于构建企业网站、社交网络和协作工具。Liferay 6是其一个重要的版本,提供了丰富的功能和改进,包括更好的用户体验、增强的社区参与度以及更强大的开发框架。 在Liferay ...

    LIFERAY4.2.0版配置

    - **导入Liferay项目**:在Eclipse中,通过"File" &gt; "Import" &gt; "Existing Projects into Workspace"导入Liferay源代码。 - **设置JDK**:确保Eclipse使用的JDK版本与Liferay 4.2.0兼容,通常需要Java 5或更高版本...

    liferay经典书籍8本

    Liferay是一款开源的企业级门户平台,它提供了丰富的功能来构建和管理数字体验,包括网站创建、内容管理、社交协作以及工作流程。以下是对这8本Liferay经典书籍的知识点总结,旨在帮助读者深入理解并掌握Liferay的...

Global site tag (gtag.js) - Google Analytics