总是会出现www306se联结错误,的提示道底306se是怎么com回事啊

小学生作文
[四年级作文]
[五年级作文]
[六年级作文]
[五年级作文]
[六年级作文]
[叙事作文]
[四年级作文]
[四年级作文]
[六年级作文]
[五年级作文]
[三年级作文]
[四年级作文]
[初二作文]
[初二作文]
[初二作文]
[初二作文]
[初一作文]
[初二作文]
[初一作文]
[初二作文]
[高三作文]
[高二作文]
[高二作文]
[高三作文]
[高三作文]
[高二作文]
[高三作文]
[高三作文]
[节日风俗]
[人物外貌描写]
写作指导 |
[写作技巧]
[写作技巧]
[写作技巧]
[写作技巧]
[写作技巧]
[写作技巧]
[写作技巧]
[写作技巧]
[写作技巧]
[写作技巧]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&posts - 166,&
comments - 29,&
trackbacks - 0
&&&& 摘要: &&
David1228 阅读(81) |
&&&& 摘要: &&
David1228 阅读(63) |
&&&& 摘要: &&
David1228 阅读(2022) |
&&&& 摘要: &&
David1228 阅读(978) |
&&&& 摘要: &&
David1228 阅读(81) |
David1228 阅读(62) |
&&&& 摘要: &&
David1228 阅读(352) |
&&&& 摘要: &&
David1228 阅读(987) |
&&&& 摘要: &&
David1228 阅读(1784) |
&&&& 摘要: &&
David1228 阅读(2012) |
&&&& 摘要: &&
David1228 阅读(152) |
&&&& 摘要: JVM调优总结 + jstat 分析jstat -gccause pid 1 每格1毫秒输出结果jstat -gccause pid 2000 每格2秒输出结果不断的在屏幕打印出结果&&S0&&&&&S1&&&&&E&&&&&&n...&&
David1228 阅读(2006) |
&&&& 摘要: &&
David1228 阅读(329) |
&&&& 摘要: &&
David1228 阅读(315) |
&&&& 摘要: &&
David1228 阅读(2478) |
转载文章:
David1228 阅读(304) |
&&&& 摘要: &&
David1228|&&
&&&& 摘要: &&
David1228 阅读(5306) |
&&&& 摘要: &&
David1228 阅读(24166) |
&&&& 摘要: &&
David1228 阅读(22068) |
&&&& 摘要: &&
David1228 阅读(2701) |
&&&& 摘要: &&
David1228 阅读(532) |
&&&& 摘要: &&
David1228 阅读(19797) |
Hibernate不支持left join带on的条件查询。解决办法:使用原生SQL或者使用HQL方式需要修改hbm文件(如果项目中大部分不适用级联配置情况下)需求是查询网络信息,网络信息中关联了分区、网络IP(1个网络--N个网络IP),网桥信息.HQL:public&void&queryVnets(Page&page)&{&&&&&&&&StringBuffer&hql&=&new&StringBuffer();&&&&&&&&hql.append("select&new&Map(vn.id&as&id,&vn.vnName&as&vnName,&b.name&as&vnType,&");&&&&&&&&hql.append("vn.vnIptype&as&vnIptype,&vn.vnIp&as&vnIp,vn.vnNat&as&vnNat,&vn.vnFlag&as&vnFlag,&");&&&&&&&&hql.append("vn.vnetFlag&as&vnetFlag,&(case&when&sum(vmvn.state)='0'&then&0&else&1&end)&as&vnState,&");&&&&&&&&hql.append("vn.useType&as&useType,&vn.createTime&as&createTime,&");&&&&&&&&hql&.append("zone.oneName&as&oneName,&zone.oneHypervisor&as&oneHypervisor,&zone.oneSeq&as&oneSeq)&");&&&&&&&&hql.append("from&VnetTable&vn, ZoneTable&zone,&BridgeTable&b&");&&&&&&&&hql.append("left&join&fetch&vn.VnTables&vmvn&where&zone.id&=&vn.zoneId&and&vn.vnType&=&b.id&");& & & & ... ...&&&&&&&&hql.append("&group&by&vn.id");&&&&&&&&if&(vnState&!=&null&&&&!"".equals(vnState))&{&&&&&&&&&&&&if&("0".equals(vnState))&{&&&&&&&&&&&&&&&&hql.append("&having&sum(vmvn.state)=0");&&&&&&&&&&&&}&else&if&("1".equals(vnState))&{&&&&&&&&&&&&&&&&hql.append("&having&sum(vmvn.state)!=0");&&&&&&&&&&&&}&&&&&&&&}&&&&}hbm配置文件:&?xml&version="1.0"&encoding="utf-8"?&&!DOCTYPE&hibernate-mapping&PUBLIC&"-//Hibernate/Hibernate&Mapping&DTD&3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&&!--&&&&&Mapping&file&autogenerated&by&MyEclipse&Persistence&Tools--&&hibernate-mapping&&&&&&class&name="com.base.mapping.VnetTable"&table="vnet_table"&&&&&&&&&&&id&name="id"&type="java.lang.String"&&&&&&&&&&&&&&column&name="ID"&length="32"&/&&&&&&&&&&&&&&generator&class="uuid.hex"&/&&&&&&&&&&/id&&&&&&&&&&property&name="vnId"&type="java.lang.Long"&&&&&&&&&&&&&&column&name="VN_ID"&&&&&&&&&&&&&&&&&&comment&创建虚拟网络时得到的ID&/comment&&&&&&&&&&&&&&/column&&&&&&&&&&/property&& & & & &...&&&&&&&&&property&name="zoneId"&type="java.lang.String"&&&&&&&&&&&&&&column&name="ZONE_ID"&length="32"&&&&&&&&&&&&&&&&&&comment&分区ID&/comment&&&&&&&&&&&&&&/column&&&&&&&&&&/property&&&&&&&&&&property&name="vlanId"&type="java.lang.Integer"&&&&&&&&&&&&&&column&name="VLAN_ID"&&&&&&&&&&&&&&&&&&comment&VLAN_ID&/comment&&&&&&&&&&&&&&/column&&&&&&&&&&/property&& & & &&&set&name="vnTables"&lazy="false"&order-by="id&asc"&inverse="false"&fetch="join"&cascade="all"&&&&&&&&&&&&&&key&column="VN_NID"/&&&&&&&&&&&&&&one-to-many&class="com.base.mapping.VnTable"/&&&&&&&&&&/set&&&&&&/class&&/hibernate-mapping&理解inverse和cascade,可以参考:http://blog.csdn.net/wkcgy/article/details/6271321总结:&&one-to-many&中,建议inverse=”true”,由“many”方来进行关联关系的维护&&many-to-many&中,只设置其中一方inverse=”false”,或双方都不设置&Cascade,通常情况下都不会使用。特别是删除,一定要慎重。操作建议&&&一般对many-to-one和many-to-many不设置级联,这要看业务逻辑的需要;对one-to-one和one-to-many设置级联。&&many-to-many关联关系中,一端设置inverse=”false”,另一端设置为inverse=”true”。在one-to-many关联关系中,设置inverse=”true”,由多端来维护关系表
David1228 阅读(10644) |
--&以下两个查询效率相当,查询时间均为0.0xx秒,~&但是Hibernate&HQL不支持from后面接子查询,可以直接使用SQL方式解决,ibatis当然可以用了。SELECT&count(*)&from&(SELECT&sum(t2.STATE)&as&vnSum,&t1.ID&FROMvnetinfo_table&t1,&vm_vn_table&t2&where&t1.ID&=&t2.VN_NID&and&t1.ZONE_ID&=&'facdf26013faee'&GROUP&BY&t1.ID)&t&where&t.vnSum&=&0;SELECT&count(*) FROM&vnetinfo_table&v&,(SELECT&sum(t2.STATE)&as&vnSum,&t1.ID&as&idd&FROMvnetinfo_table&t1,&vm_vn_table&t2&where&t1.ID&=&t2.VN_NID&and&t1.ZONE_ID&=&'facdf26013faee'&GROUP&BY&t1.ID)&twhere&v.ID&=&t.idd&and&t.vnSum&=&0;--&查询效率太低了,查询时间均为0.5xx秒左右。要比以上两个SQL耗时很多倍。~&Hibernate支持在where后用子查询作为查询条件。SELECT&count(*) FROM&vnetinfo_table&v WHERE&v.id&in&(SELECT&CASE&WHEN&SUM(t2.STATE)=0&THEN&t1.ID&ELSE&''&ENDFROM&vnetinfo_table&t1,&vm_vn_table&t2&where&t1.ID&=&t2.VN_NID&and&t1.ZONE_ID&=&'facdf26013faee'&GROUP&BY&t1.ID);--&使用join方式替换in&查询时间均为0.09x秒左右。明显提高了效率,但是Hibernate&HQL任然不支持在这种联合子查询方式。SELECT&count(*) FROM&vnetinfo_table&v&INNER&JOIN&(SELECT&CASE&WHEN&SUM(t2.STATE)=0&THEN&t1.ID&ELSE&''&END&as&iddFROM&vnetinfo_table&t1,&vm_vn_table&t2&WHERE&t1.ID&=&t2.VN_NID&and&t1.ZONE_ID&=&'facdf26013faee'&GROUP&BY&t1.ID)&t&ON&v.ID&=&t.idd&and&t.idd&IS&not&NULL;附:Mysql中关于Exists用法的介绍请参见:http://www.nowamagic.net/librarys/veda/detail/639
David1228 阅读(3005) |
md5sum命令详解:linux下的shell命令 ,制作md5码 也用于软件的md5校验MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。MD5 全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),不同的文件产生相同的报文摘要的可能性是非常非常之小的。在linux或Unix上,md5sum是用来计算和校验文件报文摘要的工具程序。一般来说,安装了Linux后,就会有md5sum这个工具,直接在命令行终端直接运行。1、使用md5sum来产生指纹(报文摘要)命令如下:md5sum filename & filename.md5 或者md5sum filename &&filename.md5也可以把多个文件的报文摘要输出到一个md5文件中,这要使用通配符*,比如某目录下有几个iso文件,要把这几个iso文件的摘要输出到iso.md5文件中,命令如下:md5sum *.iso & iso.md52、使用md5报文摘要验证文件,方法有二:把下载的文件file和该文件的file.md5报文摘要文件放在同一个目录下,然后用如下命令进行验证:md5sum -c file.md5然后如果验证成功,则会输出:正确结果。实战案例:需求:虚拟机存在多份备份,当进行备份恢复时,要求检查源备份压缩文件的完整性。那么可以通过md5这种方式来验证。压缩备份文件并生成md5码,部分shell脚本如下:#----------------------------------log&"Compressing&and&moving&$SRC_PATH"exec_and_log&"$SSH&$SRC_HOST&mkdir&-p&${SRC_PATH}_compress"for&file&in&`$SSH&$SRC_HOST&ls&$SRC_PATH&|&grep&-v&$SN_SIGN`do&&&&&exec_and_log&"$SSH&$SRC_HOST&cd&$SRC_PATH;sudo&chmod&-R&+r&$SRC_PATH/*;tar&-Sczvf&${SRC_PATH}_compress/${file}.tgz&${file}"done#----------------------------------#--------------md5&begin-----------------log&"Create&backup.md5"exec_and_log&"$SSH&$SRC_HOST&$MD5SUM&${SRC_PATH}_compress/*.tgz&&&${SRC_PATH}_compress/backup.md5"#--------------md5&end-----------------#其中&exec_and_log是另一个公共脚本中定义的。shell中可以通过点(.)的方式将脚本引入。该函数内如下:#&Executes&a&command,&if&it&fails&returns&error&message&and&exits#&If&a&second&parameter&is&present&it&is&used&as&the&error&message&when#&the&command&failsfunction&exec_and_log{&&&&message=$2&&&&EXEC_LOG_ERR=`$1&2&&1&1&/dev/null`&&&&EXEC_LOG_RC=$?&&&&if&[&$EXEC_LOG_RC&-ne&0&];&then&&&&&&&&log_error&"Command&\"$1\"&failed:&$EXEC_LOG_ERR"&&&&&&&&if&[&-n&"$2"&];&then&&&&&&&&&&&&error_message&"$2"&&&&&&&&else&&&&&&&&&&&&error_message&"Error&executing&$1:&$EXEC_LOG_ERR"&&&&&&&&fi&&&&&&&&exit&$EXEC_LOG_RC&&&&fi}#&Logs&a&message,&alias&to&log_infofunction&log{&&&&log_info&"$1"}#&Log&function&that&knows&how&to&deal&with&severities&and&adds&the#&script&namefunction&log_function{&&&&echo&"$1:&$SCRIPT_NAME:&$2"&1&&2}#&Logs&an&info&messagefunction&log_info{&&&&log_function&"INFO"&"$1"}# Logs an error messagefunction log_error{& & log_function "ERROR" "$1"}# This function is used to pass error message to the madfunction error_message{& & (& & & & echo "ERROR MESSAGE --8&------"& & & & echo "$1"& & & & echo "ERROR MESSAGE ------&8--"& & ) 1&&2}生成的backup.md5内容:$&md5sum *.tgz &&backup.md5&2c7bc0e401b1dc7d84b8&&checkpoint..tgz57a18d7f6eede&&checkpoint..tgzba81b41dc1b23db9adda&&checkpoint..tgzf4e7adb46a8fdecc60e21&&checkpoint..tgzad2a6b6f&&checkpoint.tgz4bd43eac64f238bb35cd23&&deployment.0.tgzee3d0cc75a94343bc20a&&deployment.7.tgzfcd5aaef4b90544eaa5c3&&disk.0.tgzc1ef6d911bd1e44b5a56f66&&disk.1.iso.tgz25eae70a31a7c7cff3baade4cd65fe82&&disk.1.tgz检查备份文件是否完整:exec_and_log&"$SSH&$SRC_HOST&$MD5SUM&-c&${SRC_PATH}/backup.md5"检测结果:$&md5sum&-c backup.md5&checkpoint..tgz:&OKcheckpoint..tgz:&OKcheckpoint..tgz:&OKcheckpoint..tgz:&OKcheckpoint.tgz:&OKdeployment.0.tgz:&OKdeployment.7.tgz:&OKdisk.0.tgz:&OKdisk.1.iso.tgz:&OKdisk.1.tgz:&OK
David1228 阅读(2179) |
&&&& 摘要: &&
David1228 阅读(243) |
&&&& 摘要: &&
David1228 阅读(254) |
&&&& 摘要: &&
David1228 阅读(27733) |
&&&& 摘要: 根据官方的说法,在ibatis3,也就是Mybatis3问世之前,Spring3的开发工作就已经完成了,所以Spring3中还是没有对Mybatis3的支持。因此由Mybatis社区自己开发了一个Mybatis-Spring用来满足Mybatis用户整合Spring的需求。下面就将通过Mybatis-Spring来整合Mybatis跟Spring的用法做一个简单的介绍。MapperFactoryB...&&
David1228 阅读(20286) |
不得不承认的是,在目前的web应用开发中,Spring的应用越来越广泛,其地位变得相当重要。而在最近推出的Spring 3.2版本中,又引入了一些新的值得关注的特性。本文中将介绍其中一些值得关注的新特性。一 不再需要web.xml 在新的Spring 3.2中,可以不再需要web.xml这个文件了,这得益于Servlet 3.0的新特性。其中,可以使用@WebServlet在需要调用的servlet中,使用注解去设置servlet中的映射关系。这样的话,就可以不再象以往那样要通过在web.xml中对servlet进行配置,十分方便。此外,Servlet 3.0提供了既能在容器中动态注册servlet的方法,也提供了通过实现ServletContainerInitializer接口的方法实现在容器启动阶段为容器动态注册Servlet、Filter和listeners。容器会在应用的启动阶段,调用所有实现ServletContainerInitializer接口类中的onStartup()方法。而Spring 3.2中,则进一步简化了这点,只需要实现WebApplicationInitializer接口就可以了,其中提供了一个相关的实现类--AbstractContextLoaderInitializer,它可以动态注册DispatcherServlet。这意味着,只要spring-webmvc.jar放置在web应用的web-inf/lib中,就可以调用Dispatcher servlet了。可以参考如下的例子(来自Spring文档):public&class&MyWebApplicationInitializer&implements&WebApplicationInitializer&{&&&&&&@Override&&&&&public&void&onStartup(ServletContext&container)&{&&&&&&&&&ServletRegistration.Dynamic&registration&=&container.addServlet("dispatcher",&new&DispatcherServlet());&&&&&&&&&registration.setLoadOnStartup(1);&&&&&&&&&registration.addMapping("/example/*");&&&&&}&&}&二 支持Java编程式配置在Spring mvc 3.2中,一个不错的特性就是在之前版本中支持使用Java代码配置各种依赖注入的基础上,进一步简化了配置。关于使用Java编程式配置的好处,可以通过下面这个链接文章的介绍去学习()。在Spring mvc 3.2中,提供了AbstractContextLoaderInitialize的一个子类AbstractAnnotationConfigDispatcherServletInitializer去实现零XML配置的效果,只需要创建的类继承AbstractAnnotationConfigDispatcherServletInitializer就可以了,如下代码所示:public&&&class&&&SugarSpringWebInitializer&extends&AbstractAnnotationConfigDispatcherServletInitializer&{&&&&&&@Override&&&&&protected&Class&?&[]&getRootConfigClasses()&{&&&&&&&&&return&new&Class[]&{&JavaConfig.class&};&&&&&}&&&&&&@Override&&&&&protected&Class&?&[]&getServletConfigClasses()&{&&&&&&&&&return&new&Class[]&{&WebConfig.class&};&&&&&}&&&&&&@Override&&&&&protected&String[]&getServletMappings()&{&&&&&&&&&return&new&String[]&{&"/"&};&&&&&}&&}&三功能更强大的Spring Test&框架现在,单元测试显得越来越重要了,每一个类都建议做好对应的单元测试。在Spring 3.2版本之前,如果要对Spring MVC进行单元测试的话,必须显式去调用某个控制器类中的某个方法,而不能直接单元测试相关的mapping映射。而在Spring mvc 3.2中,重新整合和增强了测试框架的功能,支持直接用/*这样的映射方式去测试某个控制器中的类。同时,之前的开源项目(中去了。此外,还新增加了对返回(return),重定向(redirect)和model等的测试改进,下面是一个例子:public&class&SayHelloControllerIT&extends&AbstractTestNGSpringContextTests&{&&&&&&&private&MockMvc&mockM&&&&&&&@BeforeMethod&&&&&public&void&setUp()&{&&&&&&&&&&&mockMvc&=&webAppContextSetup((WebApplicationContext)&applicationContext).build();&&&&&}&&&&&&&@Test(dataProvider&=&"pathParameterAndExpectedModelValue")&&&&&public&void&accessingSayhelloWithSubpathShouldForwardToSayHelloJspWithModelFilled(String&path,&String&value)&throws&Exception&{&&&&&&&&&&&mockMvc.perform(get("/sayHello/Jo")).andExpect(view().name("sayHello")).andExpect(model().attribute("name",&"Jo"));&&&&&}&}&本文的示例代码可以在:&中下载。原文链接:
David1228 阅读(2124) |
&&&& 摘要: 本文转载自:http://www.cnblogs.com/java-my-life/archive//2418836.html场景问题  举个生活中常见的例子——组装电脑,我们在组装电脑的时候,通常需要选择一系列的配件,比如CPU、硬盘、内存、主板、电源、机箱等。为讨论使用简单点,只考虑选择CPU和主板的问题。  事实上,在选择CPU的时候,面临一系列的...&&
David1228 阅读(234) |
shell中可能经常能看到:&命令的结果可以通过%&的形式来定义输出分解这个组合:“&/dev/null 2&&1” 为五部分。1:& 代表重定向到哪里,例如:echo "123" & /home/123.txt2:/dev/null 代表空设备文件3:2& 表示stderr标准错误4:& 表示等同于的意思,2&&1,表示2的输出重定向等同于15:1 表示stdout标准输出,系统默认值是1,所以"&/dev/null"等同于 "1&/dev/null"因此,&&也可以写成“1& /dev/null 2& &1”那么本文标题的语句执行过程为:1&/dev/null :首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。2&&1 :接着,标准错误输出重定向 到 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。最常用的方式有:&& &command & file 2&file& 与command & file 2&&1它们有什么不同的地方吗?&&&&& 首先command & file 2&file 的意思是将命令所产生的标准输出信息,和错误的输出信息送到file 中.command& & file 2&file 这样的写法,stdout和stderr都直接送到file中, file会被打开两次,这样stdout和stderr会互相覆盖,这样写相当使用了FD1和FD2两个同时去抢占file 的管道。&&&&& 而command &file 2&&1 这条命令就将stdout直接送向file, stderr 继承了FD1管道后,再被送往file,此时,file 只被打开了一次,也只使用了一个管道FD1,它包括了stdout和stderr的内容。&&&&& 从IO效率上,前一条命令的效率要比后面一条的命令效率要低,所以在编写shell脚本的时候,较多的时候我们会command & file 2&&1 这样的写法。&以上转载自:-----------------------------------------------------------------------------------------------------那么,有这么个需求,我如何能判断远程主机上的某个文件是否存在呢,我能想到的有两种方法,一种方法可以使用expect脚本,但是需要远程主机上安装expect包,但是只需要知道用户名和密码就可以了;第二种方法是要求两台主机之间做好ssh互信,然后如admin,那么通过shell可以直接判断,但是文件宿主权限也需要是admin用户下的。第二种方法脚本如下:#!/bin/bashssh&dst_host&sh&-s&2&&1&1&/dev/null&&&EOFls&$NEW_DST_DIREOFIS_EXIST=$?if&[&"$IS_EXIST"x&=&"0"x&];&then&&&echo&"-The&file&exists------------------------------"else&&&echo&"No&file-------------------------------"fi--大卫
David1228 阅读(758) |
OpenNebula中主机添加一切正常。执行$onehost list 主机CPU、内存资源可以正常被监控到。但是,创建虚拟机后,虚拟机状态很长一段时间一直处于pend状态。而OpenNebula的mm_sched调度虚拟机的周期是缺省30秒调度一次,根据调度算法适配一台合适的主机,主机是新添加的而且是有足够资源的,为什么不能部署呢?我们可以通过查看虚拟机的调度日志$ONE_LOCATION/var/sched.log发现如下错误信息:Tue Feb 21 [HOST][E]: Exception raised: Unable to transport XML to server and get XML response back. &HTTP response: 504 Tue Feb 22 14:27:39 2011 [POOL][E]: Could not retrieve pool info from ONE。解决方法:在OpenNebula官方的Wiki中可以找到原因,原因是所添加的主机使用了HTTP代理上网了,所以OpenNebula读取了系统的http_proxy环境变量,此时就需要关闭http_proxy。If the scheduler does not deploy the pending VMs, and messages like these are found in sched.log[HOST][E]: Exception raised: Unable to transport XML to server and get XML response back.
HTTP response code is 404, not 200 [POOL][E]: Could not retrieve pool info from ONEThen you need to unset the&http_proxy&environment variable, or set the&no_proxy&accordingly.wiki参考地址(这里汇总了使用或部署one过程中可能遇到的问题以及解决办法):大家对于Opennebula的安装部署感兴趣的话,可以参考vpsee的博客(),讲解的很详细。vpsee已经试玩了下,由于项目原因,目前我们还在用OpenNebula3.8.1,后面也会测试升级到OpenNebula4.0看看新功能。升级过程同样也参考下vpsee的,^^ 这么好的资源优先借鉴。
David1228 阅读(493) |
启动和停止OpenNebula shell脚本如下:
给这个脚本起个名字吧,叫做oned#!/bin/bash##&chkconfig:&345&80&15#&description:&Startup&script&for&the&one&.#&Source&function&library..&/etc/rc.d/init.d/functionsAPP_USER=oneadminAPP_HOME=/opt/nebula/ONE/RETVAL=0start(){&&&&&&&&checkrun&&&&&&&&if&[&$RETVAL&-eq&1&];&then&&&&&&&&&&&&&&&&echo&"Starting&oned"&&&&&&&&&&&&&&&&su&-&$APP_USER&-c&"$APP_HOME/bin/one&start"&&&&else&&&&&&&echo&"oned&is&already&running."&&&&&&&&fi}stop(){&&&&&&&&su&-&$APP_USER&-c&"$APP_HOME/bin/oneuser&list"&&&/dev/null&2&&1&&&&&&&&result=$?&&&&&&&&if&[&$result&-eq&0&];&then&&&&&&&&&&&&&&&&echo&"Shutting&down&oned"&&&&&&&&&&&&&&&&su&-&$APP_USER&-c&"$APP_HOME/bin/one&stop"&&&&&&&&elif&[&$result&-eq&255&];&then&&&&&&&&&&&&&&&&echo&"Shutting&down&oned"&&&&&&&&&&&&&&&&pkill&-9&-u&oneadmin&&&&fi}&&&checkrun(){&&&&&&&&su&-&$APP_USER&-c&"$APP_HOME/bin/oneuser&list"&&&/dev/null&2&&1&&&&&&&&if&[&$?&-eq&0&];&then&&&&&&&&&&&&&RETVAL=0&&&&&&&&&&&&&return&$RETVAL&&&&else&&&&&&&&&&&&&RETVAL=1&&&&&&&&&&&&&return&$RETVAL&&&&&&&&fi}status(){&&&&&&&&checkrun&&&&&&&&if&[&$RETVAL&-eq&0&];&then&&&&&&&&&&&&&&&&echo&"oned&is&running."&&&&&&&&else&&&&&&&&&&&&echo&"oned&is&stopped."&&&&&&&&&&&&exit&1&&&&&&&&fi}case&"$1"&instart)&&&&&&&&start&&&&&&&&RETVAL=$?&&&&&&&&;;stop)&&&&&&&&stop&&&&&&&&RETVAL=$?&&&&&&&&;;restart)&&&&&&&&stop&&&&&&&&start&&&&&&&&RETVAL=$?&&&&&&&&;;status)&&&&&&&&status&&&&&&&&;;*)&&&&&&&&echo&"Usage:&$0&{start|stop|restart|status}"&&&&&&&&esacecho&$RETVALexit&0Linux中如何设置服务开机自启动,可以参考1. 首先查看服务器默认的运行级别是多少? 目的是在对应运行级别下建立服务的软连接。&1& 执行命令#runlevel&[root@compute-63-14]# runlevel&N 3&2& 查看/etc/inittab&[root@compute-63-14 tomcat6]# cat /etc/inittab&&# inittab is only used by upstart for the default runlevel.&... ...&&id:3:initdefault:&2. 将写好的oned脚本拷贝到/etc/init.d/目录下3.&在/etc/rc.d/rc3.d中建立软链接cd /etc/init.d/rc.d/rc3.dln -s ../init.d/oned S99onedS99oned是其软链接,S开头代表加载时自启动以上已测试过,没有问题,同时有兴趣可以试试第二、三种方式。
David1228 阅读(191) |
VNCServer 的X 桌面默认为 twm, 这时连接进去只能看到终端界面,而看不到远程桌面界面。可修改 /root/.vnc/xstartup 文件,将其改为 GNOME 或 KDE 桌面: GNOME: [root @ test vnc-4_1_2-x86_linux] # vi /root/.vnc/xstartup #!/bin/sh [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot –solid grey vncconfig –iconic & xterm –geometry 80x24+10+10 –ls –title “$VNCDESKTOP Desktop” & gnome-session &
KDE: [root @ test vnc-4_1_2-x86_linux] # vi /root/.vnc/xstartup #!/bin/sh [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot –solid grey vncconfig –iconic & xterm –geometry 80x24+10+10 –ls –title “$VNCDESKTOP Desktop” &
startkde & 修改完毕后须重新启动 VNCServer [root @ test vnc-4_1_2-x86_linux] # vncserver –kill :1 && vncserver :1 [root @ test vnc-4_1_2-x86_linux] # vncviewer 192.168.98.32:1 连接后即可使用 GNOME 或 KDE 桌面啦(就像 WinXP 的远程桌面一般),也可以通过 WEB 访问,在浏览器中输入 即可,VNC 默认的端口号为5801。转载:http://shaoruisky.blog.163.com/blog/static//
David1228 阅读(1456) |
Spring2.5继续坚持了这个发展趋向,特别是为那些使用Java 5或更新版本java的开发人员提供了进一步简化而强大的新特性。这些新特性包括:注解驱动的依赖性注入(annotation-driven dependency injection),使用注解而非XML元数据来自动侦测classpath上的Spring组件,注解对生命周期方法的支持,一个新的web控制器模型将请求映射到加注解的方法上,在测试框架中支持Junit4,Spring XML命名空间的新增内容,等等。项目中使用的spring2.5版本。如果想要使用spring提供的注解功能.applicationContext.xml配置文件中增加如下配置:&?xml version="1.0" encoding="UTF-8"?&&beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans& http://www.springframework.org/schema/beans/spring-beans-2.5.xsd& http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"& &!-- Using annontations --& &context:annotation-config&&/context:annotation-config&新增以下三项才可以使用注解功能 xmlns:context="http://www.springframework.org/schema/context"http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-2.5.xsd"&&context:annotation-config&&/context:annotation-config&或者&bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"/& 注册一个单独的Spring post-processor.一个没有实现任何接口的业务类,配置如下:public class LogService extends Service{ public LogBiz(){}
@Resource //默认按名称查找bean. 如果找不到,则按类型匹配bean. private BaseD }tomcat启动错误1:Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'logBiz': Injection of re nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [com.ccms.base.dao.BaseDAO] is defined: expected single matching bean but found 40: [baseDAO, loginDAO, logDAO] at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessAfterInstantiation(CommonAnnotationBeanPostProcessor.java:291) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:876) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:437) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:383) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:353) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269) ... 32 moreCaused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [com.ccms.base.dao.BaseDAO] is defined: expected single matching bean but found 40: [baseDAO, loginDAO, logDAO] at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:583) at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:418) at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:497) at org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:145) at org.springframework.beans.factory.annotation.InjectionMetadata.injectFields(InjectionMetadata.java:79) at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessAfterInstantiation(CommonAnnotationBeanPostProcessor.java:288) ... 42 more使用@Resource默认按名称查找bean. 如果找不到,则按类型匹配bean.而名称dao没有找到,所以会根据BaseDAO匹配,但是BaseDAO是一个接口:&bean id="loginDAO" class="com.test.dao.loginDAO" parent="baseDAO" /&&bean id="logDAO" class="com.test.dao.logDAO" parent="baseDAO" /&&bean id="baseDAO" class="com.ccms.base.dao.BaseDAOImpl"&
&property name="sessionFactory"&
&ref bean="sessionFactory" /&
&/property&
&property name="simpleJdbcTemplate"&
&ref bean="simpleJdbcTemplate" /&
&/property&&/bean&有两个实现了BaseDAO接口的类,所以spring就不知道应该使用哪一个了。直接抛出异常。解决方法1:我们可以看到baseDAO名称是唯一的, 所以如果想要按照名称匹配,则直接写baseDAO就可以了@Resourceprivate BaseDAO baseDAO;解决方法2:@Autowired //默认按照类型匹配,同样应为有两个子类bean,所以抛出异常。@Qualifier("loginDAO") //限定beanprivate BaseDAO参考博客:http://doc.chinaunix.net/java/056.shtmlhttp://stackoverflow.com/questions//autowiring-two-beans-implementing-same-interface-how-to-set-default-bean-to-au
David1228 阅读(2106) |
&&&& 摘要: jdk并发部分,如果英文理解有点小难,可以参考http://www.yiibai.com/java6/java/util/concurrent/package-summary.html本篇转自:http://victorzhzh.iteye.com/blog/1011635很多时候我们希望任务可以定时的周期性的执行,在最初的JAVA工具类库中,通过Timer可以实现定时的周期性的需求,但是有一定的...&&
David1228 阅读(1528) |
使用开源云工具OpenNebula3.8.1在KVM环境下虚拟机迁移失败问题解决。1、虚拟机迁移失败1日志:Fri Mar &8 17:57:18 2013 [LCM][I]: New VM state is SAVE_MIGRATEFri Mar &8 17:57:30 2013 [VMM][I]: ExitCode: 0Fri Mar &8 17:57:30 2013 [VMM][I]: Successfully execute virtualization driver operation: save.Fri Mar &8 17:57:30 2013 [VMM][I]: ExitCode: 0Fri Mar &8 17:57:30 2013 [VMM][I]: Successfully execute network driver operation: clean.Fri Mar &8 17:58:14 2013 [LCM][I]: New VM state is PROLOG_MIGRATEFri Mar &8 17:58:14 2013 [TM][I]: mv: -------------------------/one_images_3.8.1/0/42/disk.0Fri Mar &8 17:58:14 2013 [TM][I]: ExitCode: 0Fri Mar &8 18:02:28 2013 [TM][I]: mv: Moving bcec162:/one_images_3.8.1/0/42 to node153:/one_images_3.8.1/0/42Fri Mar &8 18:02:28 2013 [TM][I]: ExitCode: 0Fri Mar &8 18:02:29 2013 [LCM][I]: New VM state is BOOTFri Mar &8 18:02:30 2013 [VMM][I]: ExitCode: 0Fri Mar &8 18:02:30 2013 [VMM][I]: Successfully execute network driver operation: pre.Fri Mar &8 18:02:33 2013 [VMM][I]: Command execution fail: /var/tmp/one/vmm/kvm/restore /one_images_3.8.1/0/42/checkpoint node153 42 node153Fri Mar &8 18:02:33 2013 [VMM][E]: restore: Command "virsh --connect qemu:///system restore /one_images_3.8.1/0/42/checkpoint" failed: error: Failed to restore domain from /one_images_3.8.1/0/42/checkpointFri Mar &8 18:02:33 2013 [VMM][I]: error: unable to set user and group to '0:0' on '/one_images_3.8.1/0/42/disk.1': No such file or directoryFri Mar &8 18:02:33 2013 [VMM][E]: Could not restore from /one_images_3.8.1/0/42/checkpointFri Mar &8 18:02:33 2013 [VMM][I]: ExitCode: 1Fri Mar &8 18:02:33 2013 [VMM][I]: Failed to execute virtualization driver operation: restore.Fri Mar &8 18:02:33 2013 [VMM][E]: Error restoring VM: Could not restore from /one_images_3.8.1/0/42/checkpointFri Mar &8 18:02:34 2013 [DiM][I]: New VM state is FAILEDSat Mar &9 09:23:46 2013 [DiM][I]: New VM state is DONE.Sat Mar &9 09:23:46 2013 [TM][W]: Ignored: LOG I 42 ExitCode: 0Sat Mar &9 09:23:47 2013 [TM][W]: Ignored: LOG I 42 delete: Deleting /one_images_3.8.1/0/42Sat Mar &9 09:23:47 2013 [TM][W]: Ignored: LOG I 42 ExitCode: 0Sat Mar &9 09:23:47 2013 [TM][W]: Ignored: TRANSFER SUCCESS 42 -解决方法:在mv脚本中TAR拷贝命令前面增加$SUDO命令.$ONE_LOCATION/var/remotes/tm/ssh/mv#!/bin/bash# -------------------------------------------------------------------------- ## Copyright , OpenNebula Project Leads (OpenNebula.org) & & & & & & ## & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &## Licensed under the Apache License, Version 2.0 (the "License"); you may & &## not use this file except in compliance with the License. You may obtain & &## a copy of the License at & & & & & & & & & & & & & & & & & & & & & & & & & ## & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &## http://www.apache.org/licenses/LICENSE-2.0 & & & & & & & & & & & & & & & & ## & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &## Unless required by applicable law or agreed to in writing, software & & & &## distributed under the License is distributed on an "AS IS" BASIS, & & & & &## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. & ## See the License for the specific language governing permissions and & & & &## limitations under the License. & & & & & & & & & & & & & & & & & & & & & & ##--------------------------------------------------------------------------- ## MV &hostA:system_ds/disk.i|hostB:system_ds/disk.i& vmid dsid# & &&hostA:system_ds/|hostB:system_ds/&# & - hostX is the target host to deploy the VM# & - system_ds is the path for the system datastore in the host# & - vmid is the id of the VM# & - dsid is the target datastore (0 is the system datastore)SRC=$1DST=$2VMID=$3DSID=$4if [ -z "${ONE_LOCATION}" ]; then& & TMCOMMON=/var/lib/one/remotes/tm/tm_common.shelse& & TMCOMMON=$ONE_LOCATION/var/remotes/tm/tm_common.shfi. $TMCOMMON#-------------------------------------------------------------------------------# Return if moving a disk, we will move them when moving the whole system_ds# directory for the VM#-------------------------------------------------------------------------------SRC=`fix_dir_slashes $SRC`DST=`fix_dir_slashes $DST`SRC_PATH=`arg_path $SRC`DST_PATH=`arg_path $DST`SRC_HOST=`arg_host $SRC`DST_HOST=`arg_host $DST`DST_DIR=`dirname $DST_PATH`SRC_DS_DIR=`dirname &$SRC_PATH`SRC_VM_DIR=`basename $SRC_PATH`if [ `is_disk $DST_PATH` -eq 1 ]; then& & log "-------------------------$DST_PATH" exit 0fiif [ "$SRC" == "$DST" ]; then& & exit 0fissh_make_path "$DST_HOST" "$DST_DIR"log "Moving $SRC to $DST"ssh_exec_and_log "$DST_HOST" "rm -rf '$DST_PATH'" \& & "Error removing target path to prevent overwrite errors"TAR_COPY="$SSH $SRC_HOST '$SUDO $TAR -C $SRC_DS_DIR -cf - $SRC_VM_DIR'"TAR_COPY="$TAR_COPY | $SSH $DST_HOST '$TAR -C $DST_DIR -xf -'"exec_and_log "eval $TAR_COPY" "Error copying disk directory to target host"exec_and_log "$SSH $SRC_HOST rm -rf $SRC_PATH"exit 0-------------------------------------------------------------------------------------------2、虚拟机迁移失败2日志:Sat Mar &9 09:34:12 2013 [LCM][I]: New VM state is SAVE_MIGRATESat Mar &9 09:34:24 2013 [VMM][I]: ExitCode: 0Sat Mar &9 09:34:24 2013 [VMM][I]: Successfully execute virtualization driver operation: save.Sat Mar &9 09:34:24 2013 [VMM][I]: ExitCode: 0Sat Mar &9 09:34:24 2013 [VMM][I]: Successfully execute network driver operation: clean.Sat Mar &9 09:34:25 2013 [LCM][I]: New VM state is PROLOG_MIGRATESat Mar &9 09:34:25 2013 [TM][I]: mv: -------------------------/one_images_3.8.1/0/43/disk.0Sat Mar &9 09:34:25 2013 [TM][I]: ExitCode: 0Sat Mar &9 09:36:38 2013 [TM][I]: mv: Moving node153:/one_images_3.8.1/0/43 to bcec162:/one_images_3.8.1/0/43Sat Mar &9 09:36:38 2013 [TM][I]: mv: -------------------target copyySat Mar &9 09:36:38 2013 [TM][I]: mv: ++++++++++++++++++++++end copySat Mar &9 09:36:38 2013 [TM][I]: ExitCode: 0Sat Mar &9 09:36:38 2013 [LCM][I]: New VM state is BOOTSat Mar &9 09:36:38 2013 [VMM][I]: ExitCode: 0Sat Mar &9 09:36:38 2013 [VMM][I]: Successfully execute network driver operation: pre.Sat Mar &9 09:36:42 2013 [VMM][I]: Command execution fail: /var/tmp/one/vmm/kvm/restore /one_images_3.8.1/0/43/checkpoint bcec162 43 bcec162Sat Mar &9 09:36:42 2013 [VMM][E]: restore: Command "virsh --connect qemu:///system restore /one_images_3.8.1/0/43/checkpoint" failed: error: Failed to restore domain from /one_images_3.8.1/0/43/checkpointSat Mar &9 09:36:42 2013 [VMM][I]: error: internal error process exited while connecting to monitor: Supported machines are:Sat Mar &9 09:36:42 2013 [VMM][I]: pc & & & & RHEL 6.0.0 PC (alias of rhel6.0.0)Sat Mar &9 09:36:42 2013 [VMM][I]: rhel6.0.0 &RHEL 6.0.0 PC (default)Sat Mar &9 09:36:42 2013 [VMM][I]: rhel5.5.0 &RHEL 5.5.0 PCSat Mar &9 09:36:42 2013 [VMM][I]: rhel5.4.4 &RHEL 5.4.4 PCSat Mar &9 09:36:42 2013 [VMM][I]: rhel5.4.0 &RHEL 5.4.0 PCSat Mar &9 09:36:42 2013 [VMM][E]: Could not restore from /one_images_3.8.1/0/43/checkpointSat Mar &9 09:36:42 2013 [VMM][I]: ExitCode: 1Sat Mar &9 09:36:42 2013 [VMM][I]: Failed to execute virtualization driver operation: restore.Sat Mar &9 09:36:42 2013 [VMM][E]: Error restoring VM: Could not restore from /one_images_3.8.1/0/43/checkpointSat Mar &9 09:36:42 2013 [DiM][I]: New VM state is FAILED登陆到节点:[root@bcec162 43]# virsh restore checkpoint&错误:从 checkpoint 恢复域失败错误:internal error process exited while connecting to monitor: Supported machines are:pc & & & & RHEL 6.0.0 PC (alias of rhel6.0.0)rhel6.0.0 &RHEL 6.0.0 PC (default)rhel5.5.0 &RHEL 5.5.0 PCrhel5.4.4 &RHEL 5.4.4 PCrhel5.4.0 &RHEL 5.4.0 PC修改了bcec162节点的/etc/libvirt/qemu.conf文件:# The user ID for QEMU processes run by the system instanceuser = "root"# The group ID for QEMU processes run by the system instancegroup = "root"# Whether libvirt should dynamically change file ownership# to match the configured user/group above. Defaults to 1.# Set to 0 to disable file ownership changes.#dynamic_ownership = 0bcec162节点迁移到node153节点成功。[root@node153 43]# lltotal 5075464-rw-r--r-- 1 root & & root & Mar &8 11:11 checkpoint-rw-r--r-- 1 oneadmin kvm &
Mar &9 09:34 checkpoint.-rw-r--r-- 1 oneadmin kvm & & & & 920 Mar &9 09:26 deployment.0-rw-r--r-- 1 root & & root
Mar &9 10:14 disk.0-rw-r----- 1 root & & root & & 401408 Mar &9 09:26 disk.1lrwxrwxrwx 1 oneadmin kvm & & & & &29 Mar &9 10:09 disk.1.iso -& /one_images_3.8.1/0/43/disk.1--------------------------------------------------------------------------------------------------------3、仅修改node152节点的/etc/libvirt/qemu.conf文件:# The user ID for QEMU processes run by the system instance#user = "root"# The group ID for QEMU processes run by the system instance#group = "root"# Whether libvirt should dynamically change file ownership# to match the configured user/group above. Defaults to 1.# Set to 0 to disable file ownership changes.dynamic_ownership = 0从bcec162节点迁移到node152不成功,日志如下:Sat Mar &9 10:31:47 2013 [LCM][I]: New VM state is SAVE_MIGRATESat Mar &9 10:31:54 2013 [VMM][I]: save: Moving old checkpoint file /one_images_3.8.1/0/43/checkpointSat Mar &9 10:31:54 2013 [VMM][I]: ExitCode: 0Sat Mar &9 10:31:54 2013 [VMM][I]: Successfully execute virtualization driver operation: save.Sat Mar &9 10:31:54 2013 [VMM][I]: ExitCode: 0Sat Mar &9 10:31:54 2013 [VMM][I]: Successfully execute network driver operation: clean.Sat Mar &9 10:31:55 2013 [LCM][I]: New VM state is PROLOG_MIGRATESat Mar &9 10:31:55 2013 [TM][I]: mv: -------------------------/one_images_3.8.1/0/43/disk.0Sat Mar &9 10:31:55 2013 [TM][I]: ExitCode: 0Sat Mar &9 10:35:02 2013 [TM][I]: mv: Moving bcec162:/one_images_3.8.1/0/43 to node152:/one_images_3.8.1/0/43Sat Mar &9 10:35:02 2013 [TM][I]: mv: -------------------target copyySat Mar &9 10:35:02 2013 [TM][I]: mv: ++++++++++++++++++++++end copySat Mar &9 10:35:02 2013 [TM][I]: ExitCode: 0Sat Mar &9 10:35:02 2013 [LCM][I]: New VM state is BOOTSat Mar &9 10:35:03 2013 [VMM][I]: ExitCode: 0Sat Mar &9 10:35:03 2013 [VMM][I]: Successfully execute network driver operation: pre.Sat Mar &9 10:35:07 2013 [VMM][I]: Command execution fail: /var/tmp/one/vmm/kvm/restore /one_images_3.8.1/0/43/checkpoint node152 43 node152Sat Mar &9 10:35:07 2013 [VMM][E]: restore: Command "virsh --connect qemu:///system restore /one_images_3.8.1/0/43/checkpoint" failed: error: Failed to restore domain from /one_images_3.8.1/0/43/checkpointSat Mar &9 10:35:07 2013 [VMM][I]: error: operation failed: failed to retrieve chardev info in qemu with 'info chardev'Sat Mar &9 10:35:07 2013 [VMM][E]: Could not restore from /one_images_3.8.1/0/43/checkpointSat Mar &9 10:35:07 2013 [VMM][I]: ExitCode: 1Sat Mar &9 10:35:07 2013 [VMM][I]: Failed to execute virtualization driver operation: restore.Sat Mar &9 10:35:07 2013 [VMM][E]: Error restoring VM: Could not restore from /one_images_3.8.1/0/43/checkpointSat Mar &9 10:35:07 2013 [DiM][I]: New VM state is FAILED登陆到node152节点执行restore命令:[root@node152 43]# virsh restore checkpointerror: Failed to restore domain from checkpointerror: internal error process exited while connecting to monitor: qemu: could not open disk image /one_images_3.8.1/0/43/disk.0: Permission denied将/etc/libvirt/qemu.conf文件中注释掉dynamic_ownership=0,开启user=root和group=root.&如果开启dynamic_ownership则恢复虚拟机也会报出上面的错误信息。在node152节点上恢复虚拟机:[root@node152 43]# virsh restore checkpointDomain restored from checkpoint[root@node152 43]# virsh list&Id Name & & & & & & & & State----------------------------------117 one-43 & & & & & & & running参考文章:https://wiki.archlinux.org/index.php/QEMU_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)http://hi.baidu.com/juacm/item/f1fc3f98df01e2转载请保持原链接:http://www.blogjava.net/ldwblog/archive//396187.html
David1228 阅读(434) |
项目组内一位同事,在重构代码过程中将几个模块的Service层接口去掉后. 修改成了没有实现任何接口的类,并且继承了一个抽象基类。然后我更新代码后执行系统中的该模块,发现部分表数据没有完整持久到数据库中。看了下代码和spring配置文件,原来调整后的Biz的业务类没有配置事务导致的。修改了下spring配置文件(beanNames绑定了*Biz):& & xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&&&&xsi:schemaLocation="http://www.springframework.org/schema/beans&http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"&&&&&&bean&id=&"propertyConfigurer"&&&&&&&&&&&&&&&&&&class&=&"com.ccms.base.util.DecryptPropertyPlaceholderConfigurer"&&&&&&&&&&&&&&&&&&property&name="locations"&value=&"classpath:sysConfig.properties"&/&&&&&&&&&&&&&&&/bean&&&&&&&&&&&&!--&&&&&bean&id="dataSource"&class="org.apache.commons.dbcp.BasicDataSource"&&&&&&&&destroy-method="close"&&&&&&&&&&property&name="driverClassName"&&&&&&&&&&&&&&value&com.mysql.jdbc.Driver&/value&&&&&&&&&&/property&&&&&&&&&&property&name="url"&&&&&&&&&&&&&&value&${dataSource.jdbcUrl}&useUnicode=true&characterEncoding=UTF-8&/value&&&&&&&&&&/property&&&&&&&&&&property&name="username"&&&&&&&&&&&&&&value&${dataSource.userName}&/value&&&&&&&&&&/property&&&&&&&&&&property&name="password"&&&&&&&&&&&&&&value&${dataSource.password}&/value&&&&&&&&&&/property&&&&&&&&&&property&name="maxActive"&&&&&&&&&&&&&&value&100&/value&&&&&&&&&&/property&&&&&&&&&&property&name="initialSize"&&&&&&&&&&&&&&value&5&/value&&&&&&&&&&/property&&&&&&&&&&property&name="maxIdle"&&&&&&&&&&&&&&value&10&/value&&&&&&&&&&/property&&&&&&&&&&property&name="minIdle"&&&&&&&&&&&&&&value&0&/value&&&&&&&&&&/property&&&&&&&&&&property&name="maxWait"&&&&&&&&&&&&&&value&-1&/value&&&&&&&&&&/property&&&&&&&&&&property&name="defaultAutoCommit"&&&&&&&&&&&&&&value&false&/value&&&&&&&&&&/property&&&&&&&&&&property&name="testOnBorrow"&&&&&&&&&&&&&&value&true&/value&&&&&&&&&&/property&&&&&&&&&&property&name="testWhileIdle"&&&&&&&&&&&&&&value&true&/value&&&&&&&&&&/property&&&&&&&&&&property&name="timeBetweenEvictionRunsMillis"&&&&&&&&&&&&&&value&600000&/value&&&&&&&&&&/property&&&&&&&&&&property&name="numTestsPerEvictionRun"&&&&&&&&&&&&&&value&20&/value&&&&&&&&&&/property&&&&&&&&&&property&name="minEvictableIdleTimeMillis"&&&&&&&&&&&&&&value&3600000&/value&&&&&&&&&&/property&&&&&&/bean&&&&--&&&&&&bean&id="dataSource"&class="com.mchange.v2.c3p0.ComboPooledDataSource"&destroy-method="close"&&&&&&&&&&&property&name="driverClass"&value="com.mysql.jdbc.Driver"&/&&&&&&&&&&property&name="jdbcUrl"&value="${dataSource.jdbcUrl}&useUnicode=true&characterEncoding=UTF-8"&/&&&&&&&&&&property&name="user"&value="${dataSource.userName}"&/&&&&&&&&&&property&name="password"&value="${dataSource.password}"&/&&&&&&&&&&&&property&name="minPoolSize"&value="5"&/&&&&&&&&&&property&name="maxPoolSize"&value="50"&/&&&&&&&&&&property&name="maxStatements"&value="0"&/&&&&&&&&&&property&name="idleConnectionTestPeriod"&value="60"&/&&&&&&&&&&property&name="acquireRetryAttempts"&value="3"&/&&&&&&/bean&&&&&&!--&Session&Factory&--&&&&&&bean&id="sessionFactory"&&&&&&&&class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"&&&&&&&&&&property&name="dataSource"&&&&&&&&&&&&&&ref&local="dataSource"&/&&&&&&&&&&/property&&&&&&!--&hbm配置文件的classPath路径&--&&&&&&&&&&property&name="mappingDirectoryLocations"&&&&&&&&&&&&&&list&&&&&&&&&&&&&&&&&&value&classpath:/com/ccms/base/mapping&/value&&&&&&&&&&&&&&/list&&&&&&&&&&/property&&&&&&&&&&property&name="hibernateProperties"&&&&&&&&&&&&&&props&&&&&&&&&&&&&&&&&&prop&key="hibernate.dialect"&org.hibernate.dialect.MySQLDialect&/prop&&&&&&&&&&&&&&&&&&prop&key="hibernate.show_sql"&true&/prop&&&&&&&&&&&&&&&&&&prop&key="hibernate.generate_statistics"&true&/prop&&&&&&&&&&&&&&&&&&prop&key="hibernate.connection.release_mode"&auto&/prop&&&&&&&&&&&&&&&&&&prop&key="hibernate.autoReconnect"&true&/prop&&&&&&&&&&&&&&&&&&&prop&key="hibernate.connection.autocommit"&false&/prop&&&&&&&&&&&&&&&&&&!--&&prop&key="hibernate.query.factory_class"&org.hibernate.hql.ast.ASTQueryTranslatorFactory&/prop&&--&&&&&&&&&&&&&&/props&&&&&&&&&&/property&&&&&&/bean&&&&&&bean&id="myTransactionManager"&&&&&&&&class="org.springframework.orm.hibernate3.HibernateTransactionManager"&&&&&&&&&&property&name="sessionFactory"&&&&&&&&&&&&&&ref&bean="sessionFactory"&/&&&&&&&&&&/property&&&&&&/bean&&&&&&&bean&id="transactionInterceptor"&&&&&&&&class="org.springframework.transaction.interceptor.TransactionInterceptor"&&&&&&&&&&property&name="transactionManager"&ref="myTransactionManager"&/&&&&&&&&&&property&name="transactionAttributes"&&&&&&&&&&&&&&props&&&&&&&&&&&&&&&&&&prop&key="*"&PROPAGATION_REQUIRED,-Exception&/prop&&&&&&&&&&&&&&/props&&&&&&&&&&/property&&&&&&/bean&&&&&&bean&&class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor"&&&&&&&&&&property&name="transactionInterceptor"&&&&&&&&&&&&ref="transactionInterceptor"&/&&&&&&/bean&&&&&&bean&&&&&&&&class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"&&&&&&&&&&property&name="beanNames"&&&&&&&&&&&&&&list&&&&&&&&&&&&&&&&&&value&*Service&/value&&&&&&&&&&&&&&&&&&value&*Biz&/value&&&&&&&&&&&&&&/list&&&&&&&&&&/property&&&&&&&&&&property&name="interceptorNames"&&&&&&&&&&&&&&list&&&&&&&&&&&&&&&&&&value&transactionInterceptor&/value&&&&&&&&&&&&&&/list&&&&&&&&&&/property&&&&&&/bean&&/beans&启动tomcat后报出如下错误信息:[ 10:36:56] [ERROR] Context initialization failed - at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:215)&org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loginBiz' defined in ServletContext resource [/WEB-INF/spring-service-resource.xml]: Initializ nested exception is org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class com.ccms.login.LoginBiz]: Common causes of this problem include using a final class or a non- nested exception is java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:445) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:383) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:353) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:400) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:736) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:369) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:261) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) at org.apache.catalina.core.StandardService.start(StandardService.java:519) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:581) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)Caused by: org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class com.ccms.login.LoginBiz]: Common causes of this problem include using a final class or a non- nested exception is java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given at org.springframework.aop.framework.Cglib2AopProxy.getProxy(Cglib2AopProxy.java:213) at org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:110) at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.createProxy(AbstractAutoProxyCreator.java:433) at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:299) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:331) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1266) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:438) ... 28 moreCaused by: java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given at net.sf.cglib.proxy.Enhancer.emitConstructors(Enhancer.java:718) at net.sf.cglib.proxy.Enhancer.generateClass(Enhancer.java:499) at net.sf.cglib.transform.TransformingClassGenerator.generateClass(TransformingClassGenerator.java:33) at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25) at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216) at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377) at net.sf.cglib.proxy.Enhancer.create(Enhancer.java:285) at org.springframework.aop.framework.Cglib2AopProxy.getProxy(Cglib2AopProxy.java:201) ... 34 more 10:36:56 org.apache.catalina.core.StandardContext listenerStart严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListenerorg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'loginBiz' defined in ServletContext resource [/WEB-INF/spring-service-resource.xml]: Initializ nested exception is org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class com.ccms.login.LoginBiz]: Common causes of this problem include using a final class or a non- nested exception is java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:445) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:383) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:353) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:400) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:736) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:369) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:261) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) at org.apache.catalina.core.StandardService.start(StandardService.java:519) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:581) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)Caused by: org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class com.ccms.login.LoginBiz]: Common causes of this problem include using a final class or a non- nested exception is java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given at org.springframework.aop.framework.Cglib2AopProxy.getProxy(Cglib2AopProxy.java:213) at org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:110) at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.createProxy(AbstractAutoProxyCreator.java:433) at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:299) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:331) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1266) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:438) ... 28 moreCaused by: java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given at net.sf.cglib.proxy.Enhancer.emitConstructors(Enhancer.java:718) at net.sf.cglib.proxy.Enhancer.generateClass(Enhancer.java:499) at net.sf.cglib.transform.TransformingClassGenerator.generateClass(TransformingClassGenerator.java:33) at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25) at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216) at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377) at net.sf.cglib.proxy.Enhancer.create(Enhancer.java:285) at org.springframework.aop.framework.Cglib2AopProxy.getProxy(Cglib2AopProxy.java:201) ... 34 more 10:36:56 org.apache.catalina.core.StandardContext start------------------------------------------通过以上错误分析之:对于实现了接口的类,直接用了JDK的动态代理,把目标对象扔给JDK的Proxy,拿到代理对象就OK了。然而对于没有实现接口的类,Spring借助于CGLIB来实现代理。解决办法:当使用CGLIB来实现代理后,没有实现接口的类1、 通过构造函数形式注入时必须有默认的构造函数,否则就会出现上面的异常。2、通过生产setter或者getter方法注入。3、通过修改Spring的CglibProxyFactory工厂类。详细解析可以参照这篇文章:
David1228 阅读(5951) |
Deserializes JavaScript Object Notation (JSON) text to produce a JavaScript value.JSON.parse(text [, reviver]) textRequired. Valid JSON text.reviverOptional. A function that filters and transforms the results. The deserialized object is traversed recursively, and the&reviver&function is called for each member of the object in post-order (every object is revived after all its members have been revived). For each member, the following occurs:If&reviver&returns a valid value, the member value is replaced with the value returned by&reviver.If&reviver&returns what it received, the structure is not modified.If&reviver&returns&null&or&undefined, the object member is deleted.The&reviver&argument is often used to transform JSON representation of International Organization for Standardization (ISO) date strings into Coordinated Universal Time (UTC) format&Date&objects.A JavaScript value—an object or array.ExceptionConditionJavaScript parser errorsThe input text does not comply with JSON syntax. To correct the error, do one of the following:Modify the&text&argument to comply with JSON syntax. For more information, see the&&of JSON objects.Make sure that the text argument was serialized by a JSON-compliant implementation, such as,&JSON.stringify.This example uses&JSON.parse&to deserialize JSON text into the&contact&object.var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}'; var contact = JSON.parse(jsontext); var fullname = contact.surname + ", " + contact. // The value of fullname is "Aaberg, Jesper" This example uses&JSON.parse&to deserialize an ISO-formatted date string. The&dateReviver&function returns&Date&objects for members that are formatted like ISO date strings.var jsontext = '{ "hiredate": "T12:00:00Z", "birthdate": "T12:00:00Z" }'; var dates = JSON.parse(jsontext, dateReviver); var string = dates.birthdate.toUTCString(); // The value of string is "Thu, 25 Dec :00 UTC"
function dateReviver(key, value) {
if (typeof value === 'string') {
a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
+a[5], +a[6]));
return }; Supported in the following document modes: Internet Explorer 8 standards, Internet Explorer 9 standards. See&.Not supported in the following document modes: Quirks, Internet Explorer 6 standards, Internet Explorer 7 standards.Serializes a JavaScript value into JavaScript Object Notation (JSON) text.JSON.stringify(value [, replacer] [, space]) valueRequired. A JavaScript value, usually an object or array, to be serialized.replacerOptional. A function or array that filters and transforms the results.If&replacer&is a function,&JSON.stringify&calls the function, passing in the key and value of each member. The return value is serialized instead of the original value. If the function returns&undefined, the member will be excluded from the serialization. The key for the root object is an empty string: "".If&replacer&is an array, only members with key values in the array will be serialized. The order of serialization is the same as the order of the keys in the array. Thereplacer&array is ignored when the&value&argument is also an array.spaceOptional. Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read.If&space&is omitted, the return-value text is generated without any extra white space.If&space&is a number, the return-value text is indented with the specified number of white spaces at each level. If&space&is greater than 10, text is indented 10 spaces.If&space&is a non-empty string, such as '\t', the return-value text is indented with the characters in the string at each level.If&space&is a string that is longer than 10 characters, the first 10 characters are used.A string that contains the serialized JSON text.ExceptionConditionThe&replacer&argument is not a function or an array.The&value&argument contains a circular reference.If the value that is being serialized has a&toJSON&method, the&JSON.stringify&function calls the&toJSON&method and uses the return value for serialization. If the return value of the&toJSON&method is&undefined, the member will not be serialized. This enables an object to determine its own JSON representation.Values that do not have JSON representations, such as&undefined, will not be serialized. In objects, they will be dropped. In arrays, they will be replaced with null.String values begin and end with a quotation mark. All Unicode characters may be enclosed in the quotation marks except for the characters that must be escaped by using a backslash. The following characters must be preceded by a backslash:Quotation mark (")Backslash (\)Backspace (b)Formfeed (f)Newline (n)Carriage return (r)Horizontal tab (t)Four-hexadecimal-digits (uhhhh)Order of ExecutionDuring the serialization process, if a&toJSON&method exists for the&value&argument,&JSON.stringify&first calls the&toJSON&method. If it does not exist, the original value is used. Next, if a&replacer&argument is provided, the value (original value or&toJSON&return-value) is replaced with the return-value of the&replacer&argument. Finally, white spaces are added to the value based on the optional&space&argument to generate the final serialized JSON text.This example uses&JSON.stringify&to serialize the&contact&object to JSON text. The&memberfilter&array is defined so that only the&surname&and&phone&members are serialized. The&firstname&member is omitted.var contact = new Object(); contact.firstname = "Jesper"; contact.surname = "Aaberg"; contact.phone = ["555-0100", "555-0120"];
var memberfilter = new Array(); memberfilter[0] = "surname"; memberfilter[1] = "phone"; var jsonText = JSON.stringify(contact, memberfilter, "\t"); /* The value of jsonText is: '{
"surname": "Aaberg",
"phone": [
"555-0100",
"555-0120"
] }' */ This example uses&JSON.stringify&to serialize an array. The&replaceToUpper&function converts every string in the array to uppercase.var continents = new Array(); continents[0] = "Europe"; continents[1] = "Asia"; continents[2] = "Australia"; continents[3] = "Antarctica"; continents[4] = "North America"; continents[5] = "South America"; continents[6] = "Africa";
var jsonText = JSON.stringify(continents, replaceToUpper); /* The value of jsonText is: '"EUROPE,ASIA,AUSTRALIA,ANTARCTICA,NORTH AMERICA,SOUTH AMERICA,AFRICA"' */
function replaceToUpper(key, value) {
return value.toString().toUpperCase(); } This example uses the&toJSON&method to serialize string member values in uppercase.var contact = new Object();
contact.firstname = "Jesper"; contact.surname = "Aaberg"; contact.phone = ["555-0100", "555-0120"];
contact.toJSON = function(key)
var replacement = new Object();
for (var val in this)
if (typeof (this[val]) === 'string')
replacement[val] = this[val].toUpperCase();
replacement[val] = this[val]
var jsonText = JSON.stringify(contact);
/* The value of jsonText is: '{"firstname":"JESPER","surname":"AABERG","phone":["555-0100","555-0120"]}' */ Supported in the following document modes: Internet Explorer 8 standards, Internet Explorer 9 standards. See&.Not supported in the following document modes: Quirks, Internet Explorer 6 standards, Internet Explorer 7 standards.http://msdn.microsoft.com/library/cc836459(VS.85).aspx
David1228 阅读(553) |
转载自:http://linuxtoy.org/archives/kvm-issue.html笔者在部署 KVM 虚拟机时曾遇到一个奇怪的问题,几经探索之后终于解决,现在写出来跟大家分享一下。笔者在单位部署了一台服务器,上面运行着几部 KVM 虚拟机,分别执行不同的任务。系统上线之后,需要再增加几部虚拟机。因为当初部署服务器时做了虚拟机备份,所以就复制了一个备份的虚拟机。可是新虚拟机启动之后无法在本地网络上找到新虚拟机的 IP 地址(本地网络采用 DHCP 分配 IP 地址)!因为服务器是远程控制的,当然新虚拟机也就无法使用了。为了查找原因,笔者把虚拟机复制到本地主机上,用正常方法开启。启动过程及登录都很正常,于是检查网卡状况:$ ifconfig 可是却只有显示 lo 信息! 怪了,eth0 呢?只有 lo 当然是没有办法同网络通讯的。于是查找一下启动信息:$ dmesg | grep eth 发现如下信息:udev: renamed network interface eth0 to eth1 原来 eth0 已经没有了,被命名为 eth1, 再看网卡配置$ cat /etc/network/interfaces auto eth0 iface eth0 inet dhcp 至此事情水落石出,原来 KVM 是在启动时传递 mac 参数的,如笔者是用下面命令启动 KVM 虚拟机:$ sudo kvm -m 256 -hda /data/kvm/mail.img -net nic,vlan=0,macaddr=52-54-00-12-30-05 -net tap,vlan=0,ifname=tap5,script=no -boot c -smp 2 -daemonize -nographic & 注意上面的 macaddr=52-54-00-12-30-05,这就是虚拟机启动后的网卡 mac,因为网络内不可以有相同的 mac,所以启动每个虚拟机的 mac 都要改。可是当换了新的 mac 后,虚拟机里的系统就认为换了新网卡,所以系统改变 eth0 为 eth1,而在网卡设置里面却只设置了 eth0, 所以虚拟机启动之后并没有启动新的 eth1 网卡,当然就连不上网络了。原因找到了之后问题的解决也就非常简单:$ vi /etc/network/interfaces 增加以下内容:auto eth1 iface eth1 inet dhcp 再重新启动网络:$ /etc/init.d/networking restart 至此问题应该就完全解决了。不过有个问题还要注意,如果有多次用不同的 mac 启动虚拟机,可能你的虚拟机里已经有了 eth2, eth3 甚至是 10 都是有可能的,因为你每用一个新的 mac 去启动虚拟机,系统就会增加一个网卡。可以修改下面这个文件:$ vi /etc/udev/rules.d/70-persistent-net.rules 删除所有的的 ethX 行,重启虚拟机即可。{ Thanks 逸飞. }
David1228 阅读(768) |
WARNING: The file has been changed since reading it!!!Do you really want to write to it (y/n)?y"/proc/sys/net/ipv4/ip_forward" E667: Fsync failedHit ENTER or type command to continue编辑/etc/sysctl.conf把net.ipv4.ip_forward = 0改成net.ipv4.ip_forward = 1如果此文件中没有这个选项则将其添加上就行。然后执行命令:#sysctl -p使其生效。[root@IBM-007 sudo]# sysctl -pnet.ipv4.ip_forward = 1net.ipv4.conf.default.rp_filter = 2net.ipv4.conf.default.accept_source_route = 0kernel.sysrq = 0kernel.core_uses_pid = 1net.ipv4.tcp_syncookies = 1kernel.msgmnb = 65536kernel.msgmax = 65536kernel.shmmax = kernel.shmall = vm.min_free_kbytes = 65536kernel.panic_on_oops = 1kernel.panic = 60[root@IBM-007 sudo]#&[root@IBM-007 sudo]#

我要回帖

更多关于 色琪琪www 618se con 的文章

 

随机推荐