关于停电系统管理总结.doc_第1页
关于停电系统管理总结.doc_第2页
关于停电系统管理总结.doc_第3页
关于停电系统管理总结.doc_第4页
关于停电系统管理总结.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

停电系统管理主要用的技术webwork也就是struct2的前身:xwork1.0,还有spring框架,以及spring框架中的ibatis技术,log日志的开发,Quartz任务调度开发,Ehcache缓存框架,Webservice发布配置, Spring事务管理.Spring框架主要的作用是通过配置文件生成对象,调用对象的方法,在实现ibatis技术,log日志功能实现,Quartz任务调度技术,以及Ehcache缓存和webservice发布,都是通过配置文件实现的,Webwork框架主要功能实现是关于action的定义,另外ww标签也是该框架的亮点,标签实现的功能足以让一个web开发新手变成一个高手,里面的功能实现让人眼花缭乱,IBATIS框架:(框架里是要用ibatis的,真实代码实现并没有用这个)iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的JPetStore实例。相对Hibernate和ApacheOJB等“一站式”ORM解决方案而言,ibatis 是一种“半自动化”的ORM实现。ibatis本是apache的一个开源项目,2010年这个项目由apache software foundation 迁移到了google code,并且改名为mybatis。使用ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的 Java对象,这一层与通过 Hibernate 实现 ORM 而言基本一致,而对于具体的数据操作,Hibernate会自动生成SQL 语句,而ibatis 则要求开发者编写具体的 SQL 语句。相对Hibernate等“全自动”ORM机制而言,ibatis 以 SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。作为“全自动”ORM实现的一种有益补充,ibatis 的出现显得别具意义。Log4j框架:log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。说明:1 log4j.rootCategory=INFO, stdout , R此句为将等级为INFO的日志信息输出到stdout和R这两个目的地,stdout和R的定义在下面的代码,可以任意起名。等级可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,如果配置OFF则不打出任何信息,如果配置为INFO这样只显示INFO, WARN, ERROR的log信息,而DEBUG信息不会被显示,具体讲解可参照第三部分定义配置文件中的logger。3 log4j.appender.stdout=org.apache.log4j.ConsoleAppender此句为定义名为stdout的输出端是哪种类型,可以是org.apache.log4j.ConsoleAppender(控制台),org.apache.log4j.FileAppender(文件),org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)具体讲解可参照第三部分定义配置文件中的Appender。4 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout此句为定义名为stdout的输出端的layout是哪种类型,可以是org.apache.log4j.HTMLLayout(以HTML表格形式布局),org.apache.log4j.PatternLayout(可以灵活地指定布局模式),org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)具体讲解可参照第三部分定义配置文件中的Layout。5 log4j.appender.stdout.layout.ConversionPattern= QC %p %t %C.%M(%L) | %m%n如果使用pattern布局就要指定的打印信息的具体格式ConversionPattern,打印参数如下:%m 输出代码中指定的消息;%M 输出打印该条日志的方法名;%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL;%r 输出自应用启动到输出该log信息耗费的毫秒数;%c 输出所属的类目,通常就是所在类的全名;%t 输出产生该日志事件的线程名;%n 输出一个回车换行符,Windows平台为rn”,Unix平台为n”;%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d yyyy-MM-dd HH:mm:ss,SSS,输出类似:2002-10-18 22:10:28,921;%l 输出日志事件的发生位置,及在代码中的行数;QC是log信息的开头,可以为任意字符,一般为项目简称。输出的信息TS DEBUG main AbstractBeanFactory.getBean(189) | Returning cached instance of singleton bean MyAutoProxy具体讲解可参照第三部分定义配置文件中的格式化日志信息。7 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender此句与第3行一样。定义名为R的输出端的类型为每天产生一个日志文件。8 log4j.appender.R.File=D:Tomcat 5.5logsqc.log此句为定义名为R的输出端的文件名为D:Tomcat 5.5logsqc.log可以自行修改。9 log4j.appender.R.layout=org.apache.log4j.PatternLayout与第4行相同。10log4j.appender.R.layout.ConversionPattern=%d-TS %p %t %c - %m%n与第5行相同。12 . neusoft =DEBUG指定com.neusoft包下的所有类的等级为DEBUG。可以把com.neusoft改为自己项目所用的包名。13 .opensymphony.oscache=ERROR14 .sf.navigator=ERROR这两句是把这两个包下出现的错误的等级设为ERROR,如果项目中没有配置EHCache,则不需要这两句。15 mons=ERROR16 .apache.struts=WARN这两句是struts的包。17 .displaytag=ERROR这句是displaytag的包。(QC问题列表页面所用)18 .springframework=DEBUG此句为Spring的包。24 .hibernate.ps.PreparedStatementCache=WARN25 .hibernate=DEBUG此两句是hibernate的包。以上这些包的设置可根据项目的实际情况而自行定制。JFREECHART框架:jfreechart是一个免费创建图片的java工具一:jfreechart介绍 /jfreechart/index.htmljfreechart是一个免费创建图片的java工具.可以创建如下图形: 饼图(pie charts;) 曲线图(line charts ) 柱状图(horizontal/vertical bar charts) 甘特图(Gantt charts; ) XY plots and scatter plots; time series, high/low/open/close charts and candle stick charts; combination charts; Pareto charts; bubble charts; wind plots, meter charts and symbol charts; 从以下地址可以看到jfreechart可以创建的图形类型 /jfreechart/samples.html sourceforge有一个基于jfreechart的项目Cewolf可以很方便的在jsp/servlet中创建图片 jfreechart目前(2003-05-08)版本为0.98 希望得到详细的信息或下载jfreechart请访问如下站点: /jfreechart/ 二:特别说明: jfreechart是一个开源项目,但是文档是需要40美金去购买的。 还有一个很重要的问题,jfreechart如果使用中文,他使用的默认字体 显示出来的中文会很模糊,你可能需要修改源代码。 下面我就举几个简单的例子说明一下如何使用jfreechart创建图片 在开发中有可能会导入以下的类 import com.jrefinery.chart.ChartFactory; import com.jrefinery.chart.ChartUtilities; import com.jrefinery.chart.JFreeChart; import com.jrefinery.chart.TextTitle; import com.jrefinery.chart.axis.NumberAxis; import com.jrefinery.chart.plot.CategoryPlot; import com.jrefinery.chart.plot.PiePlot; import com.jrefinery.data.Day; import com.jrefinery.data.DefaultCategoryDataset; import com.jrefinery.data.DefaultPieDataset; import com.jrefinery.data.TimeSeries; import com.jrefinery.data.TimeSeriesCollection; import com.jrefinery.data.TimeSeriesDataPair; 在0.98以后包由com.jrefinery.*改变为:org.jfree 三:创建饼图 /图片标题 String title = 空调2002年市场占有率; /设定数据源 DefaultPieDataset piedata = new DefaultPieDataset(); /第一个参数为名称,第二个参数是double数 piedata.setValue(联想, 27.3); piedata.setValue(长城, 12.2); piedata.setValue(海尔, 5.5); piedata.setValue(美的, 17.1); piedata.setValue(松下, 9.0); piedata.setValue(科龙, 19.0); /创建JFreeChart,都使用ChartFactory来创建JFreeChart,很标准的工厂设计模式 JFreeChart chart = ChartFactory.createPieChart(title, piedata, true, true, true); /设定图片标题 chart.setTitle(new TextTitle(title, new Font(隶书, Font.99vALIC, 15); /chart.addSubtitle(new TextTitle(2002财年分析, new Font(隶书, Font.99vALIC, 12); /设定背景 chart.setBackgroundPaint(Color.white); /chart.s /饼图使用一个PiePlot PiePlot pie = (PiePlot)chart.getPlot(); /pie.setSectionLabelType(PiePlot.NAME_AND_PERCENT_LABELS); pie.setSectionLabelType(PiePlot.NAME_AND_VALUE_LABELS); /设定显示格式(名称加百分比或数值) pie.setPercentFormatString(#,#0.0#%); /设定百分比显示格式 pie.setBackgroundPaint(Color.white); pie.setSectionLabelFont(new Font(黑体, Font.TRUETYPE_FONT, 12); /设定背景透明度(0-1.0之间) pie.setBackgroundAlpha(0.6f); /设定前景透明度(0-1.0之间) pie.setForegroundAlpha(0.90f); /输出文件到指定目录 String rfname = MathUtil.getRoundCode(12) + .jpeg; String fileName = d:/test/ + rfname; try /可以保存文件为jpg或png格式。 ChartUtilities.saveChartAsJPEG(new File(fileName), 100, chart, 600, 600); /第一个参数为文件名 /第二个参数质量 /第三个参数为哪个chart创建图片 /第四个宽度 /第五个高度 catch (IOException exz) System.out.print(.Cantt Create image File); 其实使用JFreeChart创建图片很简单,不同的的图片类型区别在于设置数据集。Webservice发布配置webservice需要2个配置文件,web.xml和server-config.wssd,其中web.xml是用来将webservice发布到web服务器的文件,在里面必须将webservice配置到相关servlet中去,以及建立相关的servlet-mapping,如下所示: AxisServlet Apache-Axis Servlet org.apache.axis.transport.http.AxisServlet AxisServlet /servlet/AxisServlet AxisServlet *.jws AxisServlet /services/* 上面表示Axis的webservice的servlet是通过AxisServlet来实现的,如果请求的格式为/servlet/AxisServlet,*.jws,或者在/services/的后面,都将调用Axis的servlet,进一步启动JAX-RPC的运行环境。server-config.wssd是用来正式发布webservice的,如下所示:其中每个service元素都配置一个Java Bean的webservice,name属性表示如何来调用这个webservice,如这里命名为getJavaBeanWsService,那么客户端将会用/service/getJavaBeanWsService来调用webservice;属性provider定义为“java:RPC”,表示它是基于java bean的webservice调用。在属性parameter 中通过“className”来定义java bean的类名,通过“allowedMethods”来定义那些方法需要发布为webserviceQuartz任务调度开发在系统开发中,经常会遇到想使某个任务在指定的时间上定时执行或者每隔一段时间执行一次,这时就可以使用Quartz的任务调度。框架中使用第三方组件Quartz1.5和Spring集成的方式实现定时调度的功能,可实现将任意spring Bean的某个无参方法作为被调度方法。为了记录任务的执行情况(成功或者失败)和可以进行人工自动调度的功能,故在开发中需要增加一些工作(比一般的任务调度),完成一个完整的任务调度需要以下步骤:创建一个工作服务类任务调度所要完成的业务功能通常都放在服务层,并且这个service必须实现两接口:org.springframework.beans.factory.BeanNameAponent.schedule.service.ScheduleJobHandle并实现接口的所有方法,并提供相应的get方法,方便取到这些变量,如:l 以下相关属性和其set方法,主要为记录日志服务的:/* 调度时间,在人工调度时可设置,当系统自动调度时,为系统当前时间 */private Date executeTime;/* 这个service在spring中的注册名称,也是在调度维护模块中的任务名称 */private String scheduleJobName;/* 自动调度auto,手动调度manual */private String executeType;/* 调度人,自动system,手动 操作用户名称,可设置 */private String executor;/* * see * org.springframework.beans.factory.BeanNameAware#setBeanName(ja* va.lang.String) */public void setBeanName实现Spring的BeanNameAware接口方法(String name) scheduleJobName = name;/* * see * ponent.schedule.service.ScheduleJob#setExecuteTime(* java.util.Date) */public void setExecuteTime(Date exeTime) this.executeTime = exeTime;/* * see * ponent.schedule.service.ScheduleJob#setExecuteType(* java.lang.String) */public void setExecuteType(String scheduleType) this.executeType = scheduleType;/* * see * ponent.schedule.service.ScheduleJob#setExecutor(* java.lang.String) */public void setExecutor(String executor) this.executor = executor;/* * see * ponent.schedule.service.ScheduleJob#* setScheduleJobName(java.lang.String) */public void setScheduleJobName(String name) scheduleJobName = name;l ScheduleJobHandle接口中有个重要的方法:executeScheduleJob在这个方法中主要调用你的业务方法,且方法内用try catch包围,当有异常时,pwScheduleJobExceptionHandler.handleException(scheduleLog);记录到日志表中,这里需要注意的是:自己的业务方法及dao层方法不管发不发生异常,都要向外抛出,便于pwScheduleJobExceptionHandler来捕获。l 在服务类中注入服务pwScheduleJobExceptionHandler,便于写入日志,如:private PwScheduleJobExceptionHandle pwScheduleJobExceptionHandler;public void setPwScheduleJobExceptionHandler(PwScheduleJobExceptionHandle pwScheduleJobExceptionHandler) this.pwScheduleJobExceptionHandler =pwScheduleJobExceptionHandler;配置说明配置步骤:1) 定义调度(job)2) 定义job的触发条件3) 把job加入调度工厂示例:executeScheduleJob调度方法0 0 3 1 * ?触发条件触发时间配置说明CronTrigger配置格式:序号说明是否必填允许填写的值允许的通配符1秒是0-59, - * /2分是0-59, - * /3小时是0-23, - * /4日是1-31, - * ? / L W5月是1-12 or JAN-DEC, - * /6周是1-7 or SUN-SAT, - * ? / L #7年否empty或1970-2099, - * /通配符说明:* :表示所有值. 例如:在分的字段上设置 *,表示每一分钟都会触发。? :表示不指定值。使用的场景为不需要关心当前设置这个字段的值。例如:要在每月的10号触发一个操作,但不关心是周几,所以需要周位置的那个字段设置为? 具体设置为 0 0 0 10 * ?- :表示区间。例如 在小时上设置 10-12,表示 10,11,12点都会触发。, :表示指定多个值,例如在周字段上设置 MON,WED,FRI 表示周一,周三和周五触发/ :用于递增触发。如在秒上面设置5/15 表示从5秒开始,每增15秒触发(5,20,35,50)。 在月字段上设置1/3所示每月1号开始,每隔三天触发一次。L :表示最后的意思。在日字段设置上,表示当月的最后一天(依据当前月份,如果是二月还会依据是否是润年leap), 在周字段上表示星期六,相当于7或SAT。如果在L前加上数字,则表示该数据的最后一个。例如在周字段上设置6L这样的格式,则表示“本月最后一个星期五W :表示离指定日期的最近那个工作日(周一至周五). 例如在日字段上设置15W,表示离每月15号最近的那个工作日触发。如果15号正好是周六,则找最近的周五(14号)触发, 如果15号是周未,则找最近的下周一(16号)触发.如果15号正好在工作日(周一至周五),则就在该天触发。如果指定格式为 1W,它则表示每月1号往后最近的工作日触发。如果1号正是周六,则将在3号下周一触发。(注,W前只能设置具体的数字,不允许区间-).L和 W可以一组合使用。如果在日字段上设置LW,则表示在本月的最后一个工作日触发 # :序号(表示每月的第几周星期几),例如在周字段上设置6#3表示在每月的第三个周星期六.注意如果指定6#5,正好第五周没有星期六,则不会触发该配置(用在母亲节和父亲节再合适不过了)周字段的设置,若使用英文字母是不区分大小写的 MON 与mon相同.常用示例:格式: 秒 分 小时 日 月 周 年0 0 12 * * ? 每天12点触发 0 15 10 ? * * 每天10点15分触发 0 15 10 * * ? 每天10点15分触发 0 15 10 * * ? * 每天10点15分触发 0 15 10 * * ? 2005 2005年每天10点15分触发 0 * 14 * * ? 每天下午的 2点到2点59分每分触发 0 0/5 14 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发) 0 0/5 14,18 * * ? 每天下午的 18点到18点59分(整点开始,每隔5分触发)0 0-5 14 * * ? 每天下午的 2点到2点05分每分触发 0 10,44 14 ? 3 WED 3月分每周三下午的 2点10分和2点44分触发 0 15 10 ? * MON-FRI 从周一到周五每天上午的10点15分触发 0 15 10 15 * ? 每月15号上午10点15分触发 0 15 10 L * ? 每月最后一天的10点15分触发 0 15 10 ? * 6L 每月最后一周的星期五的10点15分触发 0 15 10 ? * 6L 2002-2005 从2002年到2005年每月最后一周的星期五的10点15分触发0 15 10 ? * 6#3 每月的第三周的星期五开始触发 0 0 12 1/5 * ? 每月的第一个中午开始每隔5天触发一次 0 11 11 11 11 ? 每年的11月11号 11点11分触发(光棍节)注意事项1) 在集群环境下,调度配置只能发布在一个节点上,或者单独起一个应用发布调度功能。如果在集群环境不能单独处理调度,可能会多个节点同时对一个功能进行调度,导致处理错误。特别注意!2) 在spring的调度配置文件中切勿采用动态装配(autowire),否则,会传了个sessionFactory进去,Quartz就会误以为要持久化,会抛出异常。【EhCache】Java缓存框架使用EhCache结合Spring AOP一.Ehcache简介 EhCache是一个纯Java的进程内缓存框架,具有如下特点: 1. 快速简单,非常容易和应用集成。 2.支持多种缓存策略 。 3. 缓存数据有两级:内存和磁盘,因此无需担心容量问题 。 4. 缓存数据会在虚拟机重启的过程中写入磁盘 。 5. 可以通过RMI、可插入API等方式进行分布式缓存。 6. 具有缓存和缓存管理器的侦听接口 。 7. 支持多缓存管理器实例,以及一个实例的多个缓存区域 等特点。二.Ehcache配置的相关参数 Ehcache 的配置很灵活,官方提供的配置方式有好几种,你可以通过声明配置、在xml中配置、在程序里配置或者调用构造方法时传入不同的参数。下面以最常用的XML 配置为例说下配置的相关参数的意义,ehcache.xml是最常见的一个文件,ehcache一般会通过CacheManager从classpath 加载该文件完成Cache的实例化。 1.ehcache.xml中的配置信息 ehcache.xml片段:Java代码 2.Cache中常用参数的具体意义 (1)name:Cache的唯一标识。 (2)maxElementsInMemory:内存中最大缓存对象数。 (3)eternal:Element是否永久有效,一旦设置true,timeout将不起作用。 (4)timeToIdleSeconds:设置Element在失效前的允许闲置时间。仅当element不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。 (5)timeToLiveSeconds:设置Element在失效前允许存活时间。最大时间介于创建时间和失效时间之间。仅当element不是永久有效时使用,默认是0.,也就是element存活时间无穷大。 (6)overflowToDisk:配置此属性,当内存中Element数量达到maxElementsInMemory时,Ehcache将会Element写到磁盘中。 (7)maxElementsOnDisk:磁盘中最大缓存对象数,若是0表示无穷大。 (8)memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理缓存中的内容。默认策略是LRU(最近最少使用),你也可以设置为FIFO(先进先出)或是LFU(较少使用) 三.Spring和Ehcache的集成 1.ehcache.xml 2.beans.xml的配置 classpath:ehcache.xml configCache 3.测试类Java package org.mango.cache.ehcache; import net.sf.ehcache.Cache; import net.sf.ehcache.CacheManager; import net.sf.ehcache.Element; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; public class EhcacheTest public static void main(String args) Resource res = new ClassPathResource(beans.xml); BeanFactory factory = new XmlBeanFactory(res); CacheManager cacheManager = (C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论