泛微软件有限公司:021-50942278上海市浦东软件园陆家嘴分园峨山路91弄101号3层200127泛微软件管理架构WeaverSoftwareCo.,LTD.泛微软件编程技术规范WeaverSoftwareTechRule泛微协同商务系统(Ecology)底层包开发指南泛微软件有限公司:021-50942278上海市浦东软件园陆家嘴分园峨山路91弄101号3层200127泛微软件管理架构WeaverSoftwareCo.,LTD.泛微软件编程技术规范WeaverSoftwareTechRule目录1.引言........................................................................................................................31.1概述................................................................................................................31.2定义................................................................................错误!未定义书签。2.底层包应用及范例................................................................................................32.1最基本的继承类............................................................................................32.2怎样记录日志................................................................................................32.3怎样获取属性文件的值................................................................................62.4怎样获取系统的运行目录............................................................................72.5怎样访问和运行数据库脚本........................................................................82.6如何上传一个文件......................................................................................122.7如何访问已经上传的文件..........................................................................152.8如何使用缓存提高系统效率......................................................................162.9其它底层类基本方法..................................................................................27泛微软件有限公司:021-50942278上海市浦东软件园陆家嘴分园峨山路91弄101号3层200127泛微软件管理架构WeaverSoftwareCo.,LTD.泛微软件编程技术规范WeaverSoftwareTechRule1.引言1.1概述本文档为泛微协同商务系统(Ecology)程序员开发指导文档,讲述了开发底层工具包的应用,常用功能的开发。2.底层包应用及范例本章对ecology系统的底层工具包进行讲解,开发人员可以从这里学到怎样利用底层的工具包进行开发2.1最基本的继承类系统中每一个javabean都需要继承weaver.general.BaseBean类。这个类实现了记录日志和获取属性文件值的方法。继承这两个类的其它类可直接应用这些方法来记录日志,获取属性文件某一个属性的值。方法的实现见后面的例子。继承的例子如下:javabean的继承publicclassResourceComInfoextendsBaseBean{publicvoiddoSomething(){//某一个方法方法的处理………writeLog(s);//写日志}}2.2怎样记录日志泛微软件有限公司:021-50942278上海市浦东软件园陆家嘴分园峨山路91弄101号3层200127泛微软件管理架构WeaverSoftwareCo.,LTD.泛微软件编程技术规范WeaverSoftwareTechRule继承了weaver.general.BaseBean,可以直接使用writeLog方法记录日志信息。注意这里是使用,而不是调用,因为这个方法是这两个被继承类中的方法。注意writeLog方法的使用:/***将某个对象写入Log文件*@paramobj被写入的对象*/publicvoidwriteLog(Objectobj)我们看到,可以被记入日志的是任意一个java对象。这些java对象将被自动转换成字符串对象(String)记入到日志文件中。日志文件将每天生成一个,以日志文件名称中的日期来区别,比如:ecology_20030812.log,代表2003年8月12日的日志。当天的日志为ecology.log。每一条日志的记录格式为:YYYY.MM.DD-HH:MM:SS记录日志的类名–日志信息比如:2003.03.11-06:52:05weaver.datacenter.OutReportResult-sqlisselectROUND(sum(F_sksr),5)fromT_yyrbA,CRM_CustomerInfowhereCRM_CustomerInfo.id=A.crmidandCRM_CustomerInfo.idin(5)andA.reportdate='2004-01-10'andA.reportdate='2004-03-10'andA.inputstatus='0'andA.inputstatus'9'andA.modtype='0'日志的记录有两种模式,第一种为调试模式,第二种为在线模式。在第一种模式下,所有的java对象都会记录到日志文件中,包括调试信息,在第二种模式下,只有为Exception(异常)的对象才会记录到日志文件中。模式的设置在/ecology/WEB-INF/log4jinit.properties属性文件中的log4j.rootLogger属性来指定,如下:log4j.rootLogger=INFO,A2#ifyouwanttoopenthetracefromopensource,justadd#aheadoflinelog4j.logger.org=ERRORlog4j.logger.uk=ERRORlog4j.appender.A2=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.A2.DatePattern='_'yyyyMMdd'.log'#don'tmodifythefilepropertylog4j.appender.A2.File=@ecologylog4j.appender.A2.layout=org.apache.log4j.PatternLayoutlog4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss,SSS}%-5p%c-%m%n上面的日志表明将所有的信息答应到文件日志文件中,其中日志的模式为:#FATAL0#ERROR3#WARN4只有WARN,ERROR,FATAL输出#INFO6所有的log都输出#DEBUG7泛微软件有限公司:021-50942278上海市浦东软件园陆家嘴分园峨山路91弄101号3层200127泛微软件管理架构WeaverSoftwareCo.,LTD.泛微软件编程技术规范WeaverSoftwareTechRule记录日志的例子如下:publicclassResourceComInfoextendsBaseBean{privatevoidsetResourceInfo()throwsException{try{业务处理过程……….StringdebugInfo=Thisistest;//在调试模式下将会记入日志文件writeLog(debuginfois+debugInfo);}catch(Exceptione){//在任何模式下出现异常,都将会记入日志文件writeLog(e);throwe;}}}记录的日志文件形式为:2007-10-1516:51:50,125DEBUGweaver.hrm.resource.ResourceComInfo-debuginfoisThisistest如果有异常,将会记录为:2007-10-1516:51:50,125ERRORweaver.hrm.resource.ResourceComInfo-java.sql.SQLException:[Microsoft][SQLServerJDBCDriver][SQLServer]形式参数'@id_1'定义为OUTPUT,但实际参数却未声明为OUTPUT。atcom.microsoft.jdbc.base.BaseExceptions.getException(UnknownSource)atcom.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(UnknownSource)atcom.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(UnknownSource)atcom.microsoft.jdbc.sqlserver.tds.TDSRPCRequest.processReplyToken(UnknownSource)atcom.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(UnknownSource)atcom.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(UnknownSource)atcom.microsoft.jdbc.base.BaseStatement.commonExecute(UnknownSource)atcom.microsoft.jdbc.base.BaseStatement.executeInternal(UnknownSource)atcom.microsoft.jdbc.base.BasePreparedStatement.execute(UnknownSource)atweaver.conn.Re