泛微协同商务系统(Ecology)_系统底层包开发指南
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
atweaver.hrm.resource. ResourceComInfo (ResourceComInfo.java:59)
从上面的日志信息,可以看到ResourceComInfo类的59行代码运行的时候出现错误,这个错误是执行数据库操作的脚本错误,具体的错误信息是:形式参数 '@id_1' 定义为 OUTPUT,但实际参数却未声明为 OUTPUT。说明调用数据库脚本的时候参数的数量有出入。
1.
1.1
本文档为泛微协同商务系统(Ecology)程序员开发指导文档,讲述了开发底层工具包的应用,常用功能的开发。
2.
本章对ecology系统的底层工具包进行讲解,开发人员可以从这里学到怎样利用底层的工具包进行开发
2.1
继承的例子如下:
java bean 的继承
public class ResourceComInfo extends BaseBean{
比如 :
thekeyname = thevalue
将键值的值放到多行:
thekeyname = thevalue1 \
thevalue2 \
thevalue3
thevalue4
这时候thekeyname 的值为thevalue1thevalue2thevalue3 ,thevalue4 取不到,因为thevalue3后面没有 \
import weaver.general.GCONST;
publicvoidgetSysRunPath(){
StringsysRunPath= GCONST.GetRootPath();
// 将系统的运行目录sysRunPath的值记入日志文件
writeLog("sysRunPathis"+sysRunPath) ;
throw e ;
}
}
}
记录的日志文件形式为:
2007-10-15 16:51:50,125DEBUGweaver.hrm.resource. ResourceComInfo - debug info isThis is test
如果有异常,将会记录为:
2007-10-15 16:51:50,125ERRORweaver.hrm.resource. ResourceComInfo -
* @param key 值
* @returnString 属性值
*/
public String getPropValue(String fname , String key)
getPropValue方法指定了从某一个属性文件fname中获取键值key的值。
这里的属性文件必须存放在系统运行目录下的WEB-INF/prop 目录下,文件名称为参数fname指定的文件名,不包括属性文件的后缀名,属性文件的后缀名必须为 .properties。
while( rs.next() ) {
String thename = rs.getString("name") ; //得到修改前查询的值
其它处理代码....…….
}
rs.executeSql(" select * from TB_Example ") ;
while( rs.next() ) {
2.4
weaver.general.GCONST类提供了一个静态方法getRootPath() ,返回系统的运行目录,比如系统的运行目录为d 盘的ecology目录,将返回d:\ecology\
获取系统的运行目录的例子如下:
public classTestBeanextends BaseBean {
开发过程中请将日志级别设置为INFO,通过日志可检查程序在哪里出错了。
2.3
getPropValue方法获取属性文件的值。注意这里是使用,而不是调用,因为这个方法是这两个被继承类中的方法。
注意getPropValue方法的使用:
/**
* 从配置文件中获取某个属性的值
* @param fname 属性文件名称
log4j.rootLogger = INFO,A2
#if you want to open the trace from open source,just add # ahead of line
#don't modify the file property
上面的日志表明将所有的信息答应到文件日志文件中 ,其中日志的模式为:
}
}
2.5
Ecology系统的链接池管理请参见 weaver.conn.ConnectionPool, weaver.conn.DBConnectionPool,weaver.conn.ConnCheckerTimer类的API 文档,weaver.conn.ConnectionPool用于管理ecology系统中的所有数据库链接池(ecology系统可以同时链接多个数据库,每一个数据库均有一个对应的数据库链接池,由weaver.conn.DBConnectionPool负责管理,而weaver.conn.ConnectionPool则是这些链接池的大管家,负责所有链接池的协调和统一对外接口),weaver.conn.DBConnectionPool用于建立和管理对某一个数据库的链接池,weaver.conn.ConnCheckerTimer用于监控各个链接池的状况,定期对数据库链接池中不符合要求的链接进行清理,并监视是否需要在某一链接池中建立新的链接。
日志的记录有两种模式,第一种为调试模式,第二种为在线模式。在第一种模式下,所有的java对象都会记录到日志文件中,包括调试信息,在第二种模式下,只有为Exception (异常)的对象才会记录到日志文件中。模式的设置在/ecology/WEB-INF/log4jinit.properties 属性文件中的log4j.rootLogger属性来指定,如下:
rs.executeSql(" update TB_Example set name = 'the new value' " , "ecologytest" ) ;
3、使用指定的链接池ecologytest执行存储过程 PD_Example_UpdateById
存储过程PD_Example_UpdateById 如下:
1.引言4
1.1概述4
1.2定义4
2.底层包应用及范例4
2.1最基本的继承类4
2.2怎样记录日志5
2.3怎样获取属性文件的值8
2.4怎样获取系统的运行目录10
2.5怎样访问和运行数据库脚本11
2.6如何上传一个文件15
2.7如何访问已经上传的文件19
2.8如何使用缓存提高系统效率20
2.9其它底层类基本方法29
2003年8月12日的日志。当天的日志为ecology.log。每一条日志的记录格式为 :
YYYY.MM.DD-HH:MM:SS记录日志的类名–日志信息
比如:
20032004-01-10' and A.reportdate <= '2004-03-10' and A.inputstatus >= '0' and A.inputstatus<>'9' and A.modtype='0'
#FATAL 0
#ERROR 3
#WARN 4只有WARN,ERROR,FATAL输出
#INFO 6所有的log都输出
#DEBUG 7
记录日志的例子如下:
public class ResourceComInfo extends BaseBean {
private void setResourceInfo() throws Exception{
RecordSet 执行数据库操作有两种形式,一种为调用存储过程,另一种为直接执行SQL语句。与ConnStatement不同 ,RecordSet 执行SQL语句不分查询和修改,都在一条语句中执行。RecordSecordSet rs = new RecordSet() ;
4、在一个客户程序多个执行之间,查询结果可以保留到下一次查询
RecordSet rs = new RecordSet() ;
rs.executeSql(" select * from TB_Example ") ;
rs.executeSql(" update TB_Example set name = 'the new value '") ;
业务处理过程……….
StringkeyValue= getPropValue(“thefilename” , “thekeyname”);
// 将键值thekeyname的值keyValue记入日志文件
writeLog("keyvalueis"+keyValue) ;
}
}
系统的主属性文件 weaver.properties 的文件名“weaver” 作为系统常量放在weaver.general.GCONST类中,可以使用getConfigFile() 方法来返回 “weaver ”,在编程的过程中,如果需要用到weaver.properties属性文件中的键值,请用GCONST.getConfigFile() 来获取,当主属性文件名称因为需要改变得时候,不必改变所有用到这个属性文件的类,只需要改变GCONST类中常量的值
public void doSomething() {//某一个方法
方法的处理………
writeLog(s) ;// 写日志
}
}
2.2
注意writeLog 方法的使用:
/**
* 将某个对象写入Log文件
* @param obj 被写入的对象
*/
public void writeLog(Object obj)
String thename = rs.getString("name") ; //得到修改后查询的值
CREATE PROCEDURE [PD_Example_UpdateById]
(@namevarchar(100),
@idint,
@flag integer output,
@msg varchar(80) output)
AS
update TB_Example set name = @name where id = @id
比如:
系统的运行目录为 d:\ecology\,那么属性文件必须放在d:\ecology\WEB-INF\prop\ 目录下,取名为 thefilename.properties ,其中thefilename是任意的。
在属性文件中某一个键值的值用等号来赋值,等号后面的值必须放在一行,如果一行不够写(或者为了查看的方便),可以用 \ 来链接多行。否则其它行的值不能被键值取得。等号左右都可以有空格,对键值和键值的值没有影响。
try{
业务处理过程……….
String debugInfo = "This is test" ;
// 在调试模式下将会记入日志文件
writeLog("debug info is"+debugInfo) ;
}
catch(Exception e) {
// 在任何模式下出现异常,都将会记入日志文件
writeLog(e) ;
rs.executeSql(" select * from TB_Example ") ;
while( rs.next() ) {
String thename = rs.getString("name") ;
其它处理代码....……
}
2、使用指定的链接池ecologytest执行SQL语句
RecordSet rs = new RecordSet() ;
GO
RecordSet rs = new RecordSet() ;
String newname = ....... ;
String id = ...... ;
String procpara = newname + Util.getSeparator() + id ;
rs.executeProc( "PD_Example_UpdateById" , procpara , "ecologytest" ) ;
在程序中要取得上述属性文件中键值thekeyname的值,使用方法:
getPropValue(“thefilename” , “thekeyname”);
获取属性文件的值的例子如下:
public class ResourceComInfo extends BaseBean {
private void setResourceInfo() throws Exception{
从上面的日志信息,可以看到ResourceComInfo类的59行代码运行的时候出现错误,这个错误是执行数据库操作的脚本错误,具体的错误信息是:形式参数 '@id_1' 定义为 OUTPUT,但实际参数却未声明为 OUTPUT。说明调用数据库脚本的时候参数的数量有出入。
1.
1.1
本文档为泛微协同商务系统(Ecology)程序员开发指导文档,讲述了开发底层工具包的应用,常用功能的开发。
2.
本章对ecology系统的底层工具包进行讲解,开发人员可以从这里学到怎样利用底层的工具包进行开发
2.1
继承的例子如下:
java bean 的继承
public class ResourceComInfo extends BaseBean{
比如 :
thekeyname = thevalue
将键值的值放到多行:
thekeyname = thevalue1 \
thevalue2 \
thevalue3
thevalue4
这时候thekeyname 的值为thevalue1thevalue2thevalue3 ,thevalue4 取不到,因为thevalue3后面没有 \
import weaver.general.GCONST;
publicvoidgetSysRunPath(){
StringsysRunPath= GCONST.GetRootPath();
// 将系统的运行目录sysRunPath的值记入日志文件
writeLog("sysRunPathis"+sysRunPath) ;
throw e ;
}
}
}
记录的日志文件形式为:
2007-10-15 16:51:50,125DEBUGweaver.hrm.resource. ResourceComInfo - debug info isThis is test
如果有异常,将会记录为:
2007-10-15 16:51:50,125ERRORweaver.hrm.resource. ResourceComInfo -
* @param key 值
* @returnString 属性值
*/
public String getPropValue(String fname , String key)
getPropValue方法指定了从某一个属性文件fname中获取键值key的值。
这里的属性文件必须存放在系统运行目录下的WEB-INF/prop 目录下,文件名称为参数fname指定的文件名,不包括属性文件的后缀名,属性文件的后缀名必须为 .properties。
while( rs.next() ) {
String thename = rs.getString("name") ; //得到修改前查询的值
其它处理代码....…….
}
rs.executeSql(" select * from TB_Example ") ;
while( rs.next() ) {
2.4
weaver.general.GCONST类提供了一个静态方法getRootPath() ,返回系统的运行目录,比如系统的运行目录为d 盘的ecology目录,将返回d:\ecology\
获取系统的运行目录的例子如下:
public classTestBeanextends BaseBean {
开发过程中请将日志级别设置为INFO,通过日志可检查程序在哪里出错了。
2.3
getPropValue方法获取属性文件的值。注意这里是使用,而不是调用,因为这个方法是这两个被继承类中的方法。
注意getPropValue方法的使用:
/**
* 从配置文件中获取某个属性的值
* @param fname 属性文件名称
log4j.rootLogger = INFO,A2
#if you want to open the trace from open source,just add # ahead of line
#don't modify the file property
上面的日志表明将所有的信息答应到文件日志文件中 ,其中日志的模式为:
}
}
2.5
Ecology系统的链接池管理请参见 weaver.conn.ConnectionPool, weaver.conn.DBConnectionPool,weaver.conn.ConnCheckerTimer类的API 文档,weaver.conn.ConnectionPool用于管理ecology系统中的所有数据库链接池(ecology系统可以同时链接多个数据库,每一个数据库均有一个对应的数据库链接池,由weaver.conn.DBConnectionPool负责管理,而weaver.conn.ConnectionPool则是这些链接池的大管家,负责所有链接池的协调和统一对外接口),weaver.conn.DBConnectionPool用于建立和管理对某一个数据库的链接池,weaver.conn.ConnCheckerTimer用于监控各个链接池的状况,定期对数据库链接池中不符合要求的链接进行清理,并监视是否需要在某一链接池中建立新的链接。
日志的记录有两种模式,第一种为调试模式,第二种为在线模式。在第一种模式下,所有的java对象都会记录到日志文件中,包括调试信息,在第二种模式下,只有为Exception (异常)的对象才会记录到日志文件中。模式的设置在/ecology/WEB-INF/log4jinit.properties 属性文件中的log4j.rootLogger属性来指定,如下:
rs.executeSql(" update TB_Example set name = 'the new value' " , "ecologytest" ) ;
3、使用指定的链接池ecologytest执行存储过程 PD_Example_UpdateById
存储过程PD_Example_UpdateById 如下:
1.引言4
1.1概述4
1.2定义4
2.底层包应用及范例4
2.1最基本的继承类4
2.2怎样记录日志5
2.3怎样获取属性文件的值8
2.4怎样获取系统的运行目录10
2.5怎样访问和运行数据库脚本11
2.6如何上传一个文件15
2.7如何访问已经上传的文件19
2.8如何使用缓存提高系统效率20
2.9其它底层类基本方法29
2003年8月12日的日志。当天的日志为ecology.log。每一条日志的记录格式为 :
YYYY.MM.DD-HH:MM:SS记录日志的类名–日志信息
比如:
20032004-01-10' and A.reportdate <= '2004-03-10' and A.inputstatus >= '0' and A.inputstatus<>'9' and A.modtype='0'
#FATAL 0
#ERROR 3
#WARN 4只有WARN,ERROR,FATAL输出
#INFO 6所有的log都输出
#DEBUG 7
记录日志的例子如下:
public class ResourceComInfo extends BaseBean {
private void setResourceInfo() throws Exception{
RecordSet 执行数据库操作有两种形式,一种为调用存储过程,另一种为直接执行SQL语句。与ConnStatement不同 ,RecordSet 执行SQL语句不分查询和修改,都在一条语句中执行。RecordSecordSet rs = new RecordSet() ;
4、在一个客户程序多个执行之间,查询结果可以保留到下一次查询
RecordSet rs = new RecordSet() ;
rs.executeSql(" select * from TB_Example ") ;
rs.executeSql(" update TB_Example set name = 'the new value '") ;
业务处理过程……….
StringkeyValue= getPropValue(“thefilename” , “thekeyname”);
// 将键值thekeyname的值keyValue记入日志文件
writeLog("keyvalueis"+keyValue) ;
}
}
系统的主属性文件 weaver.properties 的文件名“weaver” 作为系统常量放在weaver.general.GCONST类中,可以使用getConfigFile() 方法来返回 “weaver ”,在编程的过程中,如果需要用到weaver.properties属性文件中的键值,请用GCONST.getConfigFile() 来获取,当主属性文件名称因为需要改变得时候,不必改变所有用到这个属性文件的类,只需要改变GCONST类中常量的值
public void doSomething() {//某一个方法
方法的处理………
writeLog(s) ;// 写日志
}
}
2.2
注意writeLog 方法的使用:
/**
* 将某个对象写入Log文件
* @param obj 被写入的对象
*/
public void writeLog(Object obj)
String thename = rs.getString("name") ; //得到修改后查询的值
CREATE PROCEDURE [PD_Example_UpdateById]
(@namevarchar(100),
@idint,
@flag integer output,
@msg varchar(80) output)
AS
update TB_Example set name = @name where id = @id
比如:
系统的运行目录为 d:\ecology\,那么属性文件必须放在d:\ecology\WEB-INF\prop\ 目录下,取名为 thefilename.properties ,其中thefilename是任意的。
在属性文件中某一个键值的值用等号来赋值,等号后面的值必须放在一行,如果一行不够写(或者为了查看的方便),可以用 \ 来链接多行。否则其它行的值不能被键值取得。等号左右都可以有空格,对键值和键值的值没有影响。
try{
业务处理过程……….
String debugInfo = "This is test" ;
// 在调试模式下将会记入日志文件
writeLog("debug info is"+debugInfo) ;
}
catch(Exception e) {
// 在任何模式下出现异常,都将会记入日志文件
writeLog(e) ;
rs.executeSql(" select * from TB_Example ") ;
while( rs.next() ) {
String thename = rs.getString("name") ;
其它处理代码....……
}
2、使用指定的链接池ecologytest执行SQL语句
RecordSet rs = new RecordSet() ;
GO
RecordSet rs = new RecordSet() ;
String newname = ....... ;
String id = ...... ;
String procpara = newname + Util.getSeparator() + id ;
rs.executeProc( "PD_Example_UpdateById" , procpara , "ecologytest" ) ;
在程序中要取得上述属性文件中键值thekeyname的值,使用方法:
getPropValue(“thefilename” , “thekeyname”);
获取属性文件的值的例子如下:
public class ResourceComInfo extends BaseBean {
private void setResourceInfo() throws Exception{