手机扫一扫

浪潮加入Apache国际开源社区,成为基金会银牌赞助商
2017-07-28 09:46:13
美国当地时间7月26日,浪潮加入Apache软件基金会并成为基金会银牌赞助商。这是浪潮继成为OpenStack金牌会员以来,在进入开源社区方面取得的又一重大进展。



 

Apache软件基金会官方文件

Apache软件基金会成立于1999年,是全球最大最顶尖的国际开源组织,也是专门为推动全球开源事业发展而成立的一个非盈利性组织。Apache旗下拥有近5500名来自全球不同领域的杰出代码贡献者,在国际上具有极高的知名度和影响力。Google、Microsoft、Yahoo、IBM、Cloudera、HP、Pivotal等国际知名公司均是Apache软件基金会的赞助商。

该基金会支持的开源项目涵盖Big Data、Cloud、Databases、JavaEE、Mobile、Network-server、Security、Virtual-machine、Web-framework等诸多关键领域。Hadoop、Spark、Kudu、Tomcat、CloudStack等众多知名的大数据云计算开源项目均在Apache软件基金会的支持下孵化成功,对全球信息技术的发展有重大而深远的影响。

浪潮成为Apache软件基金会银牌Sponsor

截至目前,浪潮已有多位架构师在Apache旗下的Apache Spark、Apache Kudu、Apache NiFi等重量级大数据开源项目中成为了内核代码贡献者。在Apache开源的新型列式存储系统Kudu的最新版本中,浪潮架构师贡献的代码已被纳入并面向全球正式发布。

加入Apache软件基金会后,浪潮将继续秉承开放共享的技术发展策略,鼓励更多的浪潮架构师成为关键领域开源项目的贡献者,把浪潮在云计算、大数据领域丰富的实践沉淀逐步回馈给社区,助力国际开源生态系统的发展壮大。

READ MORE
FOLDED AWAY

浪潮亮相OpenStack Days China,首提云“新四化”
2017-07-24 14:42:25
7月24日—25日,云计算年度盛会——2017年OpenStack Days China在北京国家会议中心举行。作为OpenStack基金会黄金会员,浪潮以钻石赞助商身份参加本次大会,带来五场精彩的主题演讲分享。其中,浪潮集团系统软件部总经理张东在大会主论坛的主题演讲首次提出了云计算2.0时代的平台化、行业化、智能化、可信化四大趋势,阐释了基于OpenStack的“FAST”理念。同时,浪潮也在大会现场展示了基于OpenStack架构的浪潮云海OS 5.0以及金融、能源、政务等多个行业云解决方案。



云计算2.0时代的“新四化”

 

OpenStack的兴起,背后折射出从“业务云化”到“云化业务”的时代变革需求。云计算1.0时代建设的重点在于云基础设施,完成IT基础资源的池化、调度、智能管理和服务交付,再将传统应用迁移到云平台之上,实际上是业务云化的过程;云计算2.0时代用户更加重视从业务的实际需求出发设计云平台,期望在敏捷开发、快速响应、新技术支撑等细节上有差异化需求,支持云原生应用,强调云化业务

浪潮集团系统软件部总经理张东认为,云计算2.0时代,企业级云计算的发展将会呈现平台化、行业化、智能化、可信化四大趋势,并在大会现场的主题演讲中详细阐释了上述四大发展趋势。

浪潮集团系统软件部总经理张东发表主题演讲

 

浪潮OpenStack“FAST”新特性

 

在本次大会上,浪潮展出了全面基于OpenStack架构的云海OS5.0,并设置了互动体验和专家面对面公开课环节,与参会嘉宾进行深度互动。浪潮在OpenStack架构的基础上提出“FAST”云计算产品设计理念,从Functionality(功能性)、Availability(可用性)、Security(安全性)、Toolchain(工具化)着手,提供成熟、完善、易用的OpenStack方案型产品,以期推动开源技术更好普惠。

云海OS5.0亮相大会展区

 

目前,浪潮云海OS已在金融、能源等多个行业用户中成功部署。在能源行业,浪潮帮助中国石化销售有限公司河南石油分公司建设OpenStack云平台,成功将单台设备资源利用率提升至60%,能耗降低45%,空间节省60%,并且运维效率提高300%,运维成本降低80%;在金融行业,浪潮在某银行实施了国内最大规模基于OpenStack部署的金融生产云,规模接近1000个物理节点,创新性的实现了互联网金融业务与OpenStack开源云平台的深度结合,确保了业务快速创新、快速部署、快速上线。光大证券也与浪潮建设OpenStack环境,将原有的VMware集群和新环境统一纳入浪潮云海OS云平台管理。

让能源云运行在OpenStack之上

 

中国石化销售有限公司河南石油分公司高级工程师白伟作为用户代表,现场分享基于浪潮云海OS的能源云平台建设经验。他表示:“河南是机动车保有量排名前三的汽车大省,成品油保障是否顺畅直接关系到全省经济、民生的发展。随着公司业务规模的扩大,IT系统变得越来越复杂,除了由总部统一管理的核心生产和运营管理系统之外,公司逐步建设了客服管理系统、发票管理系统、非油品销售、易捷便利店视频监控等20多个生产和管理系统。由于原来采用传统IT架构,依靠硬件设备堆砌来解决应用部署与系统可靠性,造成了数据中心电力供应的紧张,也对应用部署速度、IT资源利用率和运维管理带来巨大挑战。”

中国石化销售有限公司河南石油分公司高级工程师白伟分享云平台最佳实践

 

中国石化销售有限公司河南石油分公司决定建设更加灵活、敏捷的云数据中心,并提出了业务部署分钟级、应用自动无缝迁移、平台安全可靠、IT资源灵活共享、自动化运维以及确保后续升级弹性等建设需求。

而在经过多方评估之后,最终选择了OpenStack开源云计算架构。白伟表示:“在部署了基于OpenStack的浪潮云海OS之后,将现有的20多个应用全部迁移至虚拟机环境之中,单台设备资源利用率提升至60%。同时,服务器设备数量从原来的近200台降低到30台,能耗降低45%,空间节省60%,不再受限于数据中心供电和空间的制约,并且业务连续性和运维效率得到显著提升。” 

 

浪潮&SUSE战略合作,云图达到81家

 

在本次大会上,浪潮与SUSE签署战略合作协议,双方将在开源技术协作创新、联合解决方案开发、重点行业联合攻关等技术、销售领域深度合作,共同为中国客户提供先进的云计算基础设施,促进数字化转型。同时,SUSE也宣布加入浪潮“云图计划”,并作为长期联盟成员与浪潮共同促进中国云计算生态的发展与完善。而随着SUSE的加入,“云图计划”的成员数量已经达到了81家

【浪潮、SUSE签署战略合作】

 

产品方案的成熟与生态完善,已经让浪潮成为中国OpenStack发展的强力推动者和最佳实践者之一,并借助“平台+生态”战略全面推进OpenStack在中国乃至全球的技术普惠和行业实践。在美国CIOReview杂志评选的最新一期"全球20家最具发展潜力OpenStack解决方案供应商"中,浪潮成为入选该榜单的两家亚洲企业之一。

 

READ MORE
FOLDED AWAY

浪潮与SUSE达成战略合作,共同推进开放云图生态
2017-07-24 16:23:34
7月24日,OpenStack Days China中国峰会期间,浪潮与SUSE签署战略合作协议,双方将在操作系统兼容性互认证、开源技术协作创新、联合解决方案开发、重点行业联合攻关等领域深度合作。同时,SUSE也宣布加入浪潮“云图计划”,并作为长期联盟成员与浪潮共同促进中国云计算生态的发展与完善。



浪潮与SUSE战略合作签约仪式】

 

基于开源技术的协作创新是浪潮与SUSE合作的重心所在,除了在Linux系统的兼容性互认证之外,双方还将在容器、业务编排等面向云原生应用的业务环境进行联合测试认证和交互性测试。同时,双方将依托InCloud Lab联合创新实验室,针对OpenStack核心组件和新兴技术如容器化部署、Ceph组件优化等云计算基础性技术进行联合开发,共同推进社区关键组件模块的优化。

而在方案与销售合作层面,双方将面向金融、能源、政务等双方各自优势行业领域进行联合方案开发,强化异构云平台管理、业务流程定制、HA、软件定义等方面的行业方案优化,并联合开展市场推广。

 
 
 
 
 

 

“浪潮提出的开放包含了软件开源和架构开放,一方面浪潮以黄金会员身份加入OpenStack开源云计算项目,并发布了基于OpenStack架构的新一代云数据中心操作系统云海OS 5.0;另一方面浪潮先后加入全球三大开放计算标准组织,是全球开放计算标准组织唯一的大满贯成员。”浪潮集团副总裁彭震表示:“SUSE是全球开源领域的先锋,一直以来不遗余力推动云计算在各个行业的发展,浪潮的创新技术与SUSE的领先开源技术完美结合,将帮助企业更好地使用云计算来加速数字化转型。”

 

SUSE公司副总裁、亚太区及日本总经理江永清表示:“SUSE凭借20多年的出色工程设计与杰出的服务,持续不断的在探索中谋求创新,以适应不断变化的企业级计算需求和技术应用,在动态的环境中帮助企业提高敏捷性、降低成本和管理复杂度。SUSE坚持为用户提供可靠、稳定的Linux操作系统以及基于云基础设施的服务,以开放的心态为用户提供服务。近年来,SUSE的合作伙伴队伍迅速壮大,此次我们非常荣幸能与国内顶级云计算企业浪潮展开合作,凭借双方的技术优势,共同为用户创造更多的应用场景,更安全的云计算实现方式。我们相信此次SUSE与浪潮达成战略合作,能为双方实现互利共赢。”

 

 

随着传统应用向云迁移与云原生应用的大量涌现,云计算正变得前所未有的庞大复杂与不可预知,用户与厂商越来越难以单独驾驭云计算,这使得云计算生态更加重要。近两年来,浪潮先后携手业界领先技术伙伴合力打造整体云海OS产品生态体系,以开放API集成领先云计算产品,成立InCloud Lab实验室,组织联合开发、测试,引入高品质产品与技术,打造全面、开放的云计算产品体系。

READ MORE
FOLDED AWAY

OpenStack Days China”如期将至“,7大干货,带你先睹为快
2017-07-21 09:18:22
7月24日 星期一 北京 年度盛会——OpenStack Days China在北京国家会议中心准时开幕,此次浪潮精心准备,好看又好玩,一起先睹为快



5大干货分享

1个重磅云图伙伴签约

1个顶级能源云案例发布

云海OS现场实操体验

 

 
五大专题分享,干货不断

 

Day1:7月24日 :云2.0浪潮云业务策略+行业云实践分享

 

Day2:7月25日:自动化部署+可信安全+金融云建设实践

 

 
展区:云海OS现场实操,奖品、互动精彩不断

 

浪潮在Z01展位,准备了专业的互动产品方案交互展示区,将展出最新发布的全面基于OpenStack的云海OS产品,多行业实践、精彩互动Demo体验区。 

 

 

 

 

 
脑力先锋挑战赛,大奖等你来拿

 

特别推出了定制版技术挑战赛平台,有关开源常识、OpenStack技术要点以及浪潮Incloud OpenStack产品知识齐上阵,你有知识我有题,大战三百回合,看谁在英雄榜顶端屹立不倒。

每天除了给前三甲送上大礼以外,凡参与比赛均有机会参与抽奖获取精美礼品,惊不惊喜,意不意外?

 

 
云海小课堂,专家面对面

 

OpenStack Days China举行期间,每天我们会在浪潮展区奉送简短的session讲解,想了解浪潮OpenStack自研产品吗?想作为幸运观众被抽中领奖吗?那就请围观,围观,强势围观!最后给大家安利一个时间安排的小攻略,重要时刻不要错过哦!

 

 

7月24日,OpenStack Days China,浪潮Z01展位见

READ MORE
FOLDED AWAY

OpenStack Days China第一弹:如果没有开源云,世界将会怎样?
2017-07-20 09:14:05
近几年,开源技术在云计算领域获得了新的发展契机,以OpenStack、Docker等为代表的开源技术的应用越来越广泛,同时国内的开源生态圈正逐步建立。开源与云计算相依相伴,很多人甚至将开源与云计算划上了等号。



中国信息通信研究院今年4月发布的《中国云计算开源发展调查报告》显示:83.2%的受访企业已经应用了开源技术,39.9%的的企业将OpenStack用于企业的生产系统。开源云架构OpenStack已经成了事实上的云标准,特别是在私有云领域,可以说成了企业用户构建云的首选。

 

如果没有开源软件,我们的世界将会怎样?作Linux开发出身的浪潮集团系统软件部总经理张东感触颇深。如果没有开源软件,软件界依然会被Windows、Oracle、VMware等巨头所垄断,而中国的软件企业可能也不会迎来“换道超车”的机会。

 

 

1
 

OpenStack“Inside”

 

 

许多人爱上开源,都是基于一个非常朴素的想法——每一个软件产品的开发没有必要都从头做起,借助开源社区的力量,或者站在那些软件巨人的肩膀上,软件开发可以事半功倍,又何乐而不为呢?

 

不过,开源软件的发展也暴露出一些问题。比如虽然开源软件的数量不计其数,但真正在Linux、Hadoop等开源应用领域取得商业成功的开源软件厂商屈指可数。这背后的原因是什么?开源软件社区的繁荣,并不意味着一个开源软件的成功,其背后还有商业公司和行业用户的大力推动。“我们的策略是,首先要积极拥抱开源,然后在开源的基础上打造自己的差异化优势。此外,我们不能仅仅停留在社区开发的水平,还要把基于开源的商业软件做得‘更高端’。”张东表示。

以现在非常火的OpenStack为例,从规模上看,它已经是仅其于Linux的第二大开源社区,参与的厂商、个人开发者众多。俗话说,众人拾柴火焰高,大家积极参与,确实可以推动软件功能的快速迭代,但不利的一面是,越多的人参与,可能会造成目标分散,不能聚焦在一个非常明确的发展方向上,并在这个方向上走得更深入。

 

在OpenStack方面,浪潮重点关注云平台底层的稳定性、安全性和可用性等,因为这也是企业级用户最关心的。举个例子,浪潮推出的OpenStack发行版,界面是浪潮自己设计的,而没有采用OpenStack原生的。这个界面是和商业用户磨合过很久,是用户在其应用场景中申请资源的最佳方式,这样更方便实现OpenStack与应用的对接、管理和安全保障等。

 

以开源为基础,做更多符合中国用户特征的拓展,这是浪潮推动OpenStack在中国普及的基本原则,其实这也同样适用于Linux、Hadoop等众多开源软件的发展。

 

我们正在步入一个开源云的大时代。还是以OpenStack为例,国内最早的OpenStack创业企业诞生于2012年,那是OpenStack在中国发展的1.0阶段。这一阶段的基本特征是:用户了解了OpenStack是什么,个别先锋型客户开始应用OpenStack,OpenStack初创企业不断涌现。

 

从2016年开始,OpenStack在中国的发展进入一个飞跃式的阶段,暂且称为2.0阶段,其特征是:OpenStack的应用由点及面,不仅是互联网企业,就连电信、金融、石化等一些大型传统企业也开始部署OpenStack;OpenStack成了云平台的“Inside”,一种最基础的框架,且被实践证明是可以大规模应用的。

 

在这一阶段,OpenStack的商业市场也开始发生变化,市场格局逐渐明朗。一类厂商是纯开源的软件公司,主要提供OpenStack发行版,并且以纯粹的开源模式来运作。不过,这类厂商是少数,主要包括Redhat、Ubuntu,而原来这一类型的代表厂商Mirantis已经转型,不做OpenStack发行版,转而以提供服务为主。

 

另一类厂商,它们主要提供深入定制的OpenStack解决方案。这类厂商又可以细分为两类:一类专注做OpenStack,很多OpenStack创业企业属于此类;另一类是像浪潮、华为、新华三这样的传统IT厂商,其目标是构建一个完整的软件堆栈。“OpenStack只是我们整体解决方案的一部分。我们更关注OpenStack如何与我们的服务器、存储等硬件平台结合,以OpenStack为基础的IaaS如何与浪潮自己的PaaS衔接,OpenStack云平台如何支撑大数据应用等。”张东解释说“我们为用户交付的是一个完整的云平台解决方案,这是我们与创业公司的最大不同。另外,我们始终坚持为OpenStack深度定制,比如软硬件,以及IaaS与PaaS的深度融合,打造自己的特色方案。”

 

浪潮集团系统软件部总经理张东

 

作为浪潮智慧计算平台的核心,云海OS从4.0版本开始与OpenStack融合,并基于OpenStack推进“线上+线下”并行的产品交付模式,即面向中小客户的线上发行版交付与面向大客户的项目定制化交付。同时,浪潮将持续改善OpenStack组件的功能,并通过管理、安全等增值功能的开发,提升产品的差异化竞争优势。浪潮还提出了“FAST”设计理念,从Functionality(功能性)、Availability(可用性)、Security(安全性)、Toolchain(工具化)等方面对OpenStack进行全面增强,实现从小开放到大开放的转变。

 

 

2
 

OpenStack的深度定制

 

 

OpenStack在中国到底有多火?虽然已经部署了OpenStack的用户还是少数,不过越来越多的用户在上云时都会把OpenStack作为一个备选项。从浪潮的实践来看,金融、政务,以及一些大型企业对OpenStack的接受度比较高。

 

“以前,用户在建立云平台时,会首先考虑VMware等商业软件。现在,一提到上云,至少50%~60%的用户,在某些行业中甚至70%以上的客户都会考虑选择OpenStack。”张东如是说,“中国用户选择软件通常考虑得比较周全,除了技术和功能上的先进性和适用性以外,政策、自主可控、成本等也是主要考虑的因素。相比商业软件,OpenStack在这些方面的优势还是比较明显的。”

 

浪潮OpenStack主要定位在金融、电信、大企业和行业云市场。这些行业客户通过云计算实现架构革新和业务提升的需求十分迫切。浪潮的策略是:推动OpenStack不断产品化,云海OS围绕OpenStack持续构建,打造多层次的云产品解决方案;持续壮大云图伙伴,构建开放、融合的OpenStack生态体系;提升OpenStack项目和客户云服务的交付能力,重点在金融、电信、大企业、行业云等市场实现落地应用;积极参与社区的活动,提升社区贡献度。

 

2014年7月,浪潮正式加入OpenStack基金会;两年后,成为OpenStack基金会金牌会员;今年5月,以黄金会员身份参加OpenStack波士顿峰会,展示了最新发布的OpenStack发行版云海OS 5.0,分享了在多个行业中的OpenStack项目实施经验。

 

OpenStack基金会黄金会员身份既是对浪潮贡献社区的充分肯定,同时也是一种激励。张东介绍说,为社区贡献主要包括以下几方面:积极为社区贡献代码是最基本的,针对OpenStack最近的两个版本,浪潮把工作重点放在了功能的进一步扩展上;基于社区版本做自己的OpenStack发行版,今年下半年有可能发布最新的版本,并持续优化自身的解决方案;在应用推广方面,浪潮的很多客户都在做OpenStack解决方案的POC测试,即将上线的客户数已经是两位数,这一数字还在持续增加中;浪潮也会积极参加社区在国内外举办的各类活动,不断扩大社区的影响力,接下来浪潮还会进一步加大对社区的投入,基于自己的特色功能模块,在社区中创立新的项目。

 

浪潮亮相OpenStack波士顿峰会

 

在开放、融合的时代背景下,生态将是每个厂商继续前进的根基。浪潮也在持续深化生态,推动智慧计算生态的构建。浪潮将坚守平台定位,与行业应用伙伴协同创新,完成“平台+应用”的整合,更好地推动智慧计算产业生态的发展。

 

“秉承开放的态度,把更多合作伙伴引进来,这是浪潮一直在做的事情。与几年前相比,最大的变化是,我们将许多合作伙伴的创新融入了浪潮的整体解决方案中。”张东举例说,“浪潮的强项是服务器、存储,在网络、安全方面等就采用了引进吸收的策略,在整体解决方案中集成合作伙伴的杀毒软件、防火墙,以及网络功能等。从基础架构再向上走,我们加强了与行业ISV的合作,重点攻克政务、能源、金融等行业。“

 

面向云计算生态,浪潮“云图计划”将进一步加大实施力度。“云图计划”在2017年将继续推进“十千百”目标,即开发10个行业云方案、发展100家合作伙伴、认证1000名工程师,扩大云计算生态圈规模。

 

 

3
 

开源改变了什么?

 

 

其实,云计算现在还处于起步阶段,无论是技术、应用还是市场,都还有更大的空间值得深入挖掘。当前,企业用户正在从虚拟化向云过渡,然后通过云生态平台将所有资源管起来。传统的应用,以及新涌现出的AI应用和丰富的互联网新型应用,需要消耗大量的资源,只有创新的IaaS架构才能满足这些复杂的需求。

 

举例来说,一个传统应用可以简单分成前端、中间件、数据库。而现在,我们要把一项任务再细分成大量小任务,一个小任务只完成一个最基本的功能,如前端接入。一个平台之上可能同时运行着成千上万个这样的小任务,而这是传统的虚拟化所无法胜任的。因此,需要更新的技术,这也是近两年容器技术火爆的原因。

OpenStack与容器、管理编排技术等的融合是一个新的趋势。张东认为,目前容器的兴起与云原生应用密不可分。针对大量新应用,用户也需要新的架构和服务方式,这也是未来IaaS平台要不断丰富和完善的地方。

 

OpenStack是一个开放的平台,需要不断兼容、接纳更多新的技术和功能,一个统一的平台,无论是从管理还是从安全性上来讲都是必要的。但是,OpenStack不是一个“杂货铺”,并不是所有的新技术、新功能都要放到OpenStack里,而是要掌握一个原则,与具体的应用场景适配。

 

其实,开源并不仅仅是指技术,它更是一种文化,将改变企业的软件开发流程和模式,以及软件人员的培养和管理方式。在开源的环境中,开发人员一般比较自由。但是传统的IT企业都有一套成熟、严格的开发流程和体系,比如浪潮的研发都是严格按照CMMI的体系在运作,包括需求的提出、产品设计、编码、测试、撰写文档等,以确保软件的质量。

 

适应开源的趋势,浪潮在研发方面希望建立一套这样的体系:产品开发必须保持原有的高水准,严格遵守内部的开发流程,保证产品的质量;同时,研发人员要与开源社区积极交流和互动,适应开源的那种氛围和模式。“从公司文化上来说,原有严谨的研发规则不会变,但是会让工程师变得更加开放,更多地行交流,不断提出新的想法。这是开源带给我们的一个比较大的转变“张东表示。

 

开源与云,为企业数字化转型插上了一对飞翔的翅膀。

READ MORE
FOLDED AWAY

浪潮SSA中标2017-2018中央国家机关政府集采目录
2017-07-14 10:00:48
FreeMarker template error: The following has evaluated to null or missing: ==> a.description [in template "WEB-INF/t/cms/incloud/default/channel/information.html" at line 112, column 19] Tip: If the failing expression is known to be legally null/missing, either specify a default value with myOptionalVar!myDefault, or use [#if myOptionalVar??]when-present[#else]when-missing[/#if]. (These only cover the last step of the expression; to cover the whole expression, use parenthessis: (myOptionVar.foo)!myDefault, (myOptionVar.foo)?? The failing instruction (FTL stack trace): ---------- ==> ${a.description} [in template "WEB-INF/t/cms/incloud/default/channel/information.html" at line 112, column 17] @cms_content_list channelId="89" titL... [in template "WEB-INF/t/cms/incloud/default/channel/information.html" at line 85, column 1] ---------- Java stack trace (for programmers): ---------- freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...] at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:98) at freemarker.core.EvalUtil.coerceModelToString(EvalUtil.java:382) at freemarker.core.Expression.evalAndCoerceToString(Expression.java:115) at freemarker.core.DollarVariable.accept(DollarVariable.java:76) at freemarker.core.Environment.visit(Environment.java:265) at freemarker.core.MixedContent.accept(MixedContent.java:93) at freemarker.core.Environment.visitByHiddingParent(Environment.java:286) at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:193) at freemarker.core.Environment.visitIteratorBlock(Environment.java:509) at freemarker.core.IteratorBlock.accept(IteratorBlock.java:103) at freemarker.core.Environment.visit(Environment.java:265) at freemarker.core.MixedContent.accept(MixedContent.java:93) at freemarker.core.Environment.visit(Environment.java:265) at freemarker.core.Environment$1.render(Environment.java:313) at com.jeecms.cms.action.directive.ContentListDirective.execute(ContentListDirective.java:70) at freemarker.core.Environment.visit(Environment.java:341) at freemarker.core.UnifiedCall.accept(UnifiedCall.java:136) at freemarker.core.Environment.visit(Environment.java:265) at freemarker.core.MixedContent.accept(MixedContent.java:93) at freemarker.core.Environment.visit(Environment.java:265) at freemarker.core.Environment.process(Environment.java:243) at freemarker.template.Template.process(Template.java:277) at com.jeecms.common.web.springmvc.SimpleFreeMarkerView.renderMergedTemplateModel(SimpleFreeMarkerView.java:111) at org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:167) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:263) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208) at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.jeecms.common.web.XssFilter.doFilter(XssFilter.java:50) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:343) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:260) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:230) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.jeecms.common.web.ProcessTimeFilter.doFilter(ProcessTimeFilter.java:35) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)