|
|
|
|
EOS应用项目中的十一条经验分享 发布时间:2007-02-05 00:00:00 作者:cservice 出处:goComDevCenter 语言:中文 阅读次数:1459次 |
| 【适用范围】
EOS5.x
【内容】
经验一、规范使用SessionEntity
一般登陆的时候设置好SessionEntity上的数据,登陆之后就不要往这块数据区放置数据。为了大家使用方便,EOS平台会在提交.do请求的时候,将SessionContext数据区下的SessionEntity的数据复制到RequestContext数据区的SessionEntity数据下面,在请求结束之后,再将RequestContext数据区的SessionEntity的数据回写到SessionContext数据区下的SessionEntity下,因此,在第一次请求没有结束,而第二次请求开始发起,并且第二次请求有对SessionEntity放置数据,第一次请求晚于第二次请求结束的时候,那么SessionEntity的回写机制,导致第一次请求的回写将第二次请求设置到SessionEntity的数据冲掉,后续程序想要继续使用在第二次请求的设置到SessionEntity的数据时候,就会因为被第一次请求回写导致取不到第二次请求往SessionEntity设置的数据。
经验二、GBK字符集GB2312转换问题
如果出现有些汉字是乱码有些不是乱码,则修改WebSphere/AppServer/properties/encoding.properties,找到行zh=GBK2312,并把GB2312改成GBK,因为常用汉字集合在GB2312中,收录汉字6763个,要比在GBK中共收汉字21004个要少。
经验三、语言环境导致日期转换错误
现象:
Caused by: COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] CLI0113E SQLSTATE 7
at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.throw_SQLException(SQLExc)
at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.throw_SQLException(SQLExc)
at COM.ibm.db2.jdbc.app.SQLExceptionGenerator.check_return_code(SQLExce)
at COM.ibm.db2.jdbc.app.DB2ResultSet.getDate2(DB2ResultSet.java:1540)
at COM.ibm.db2.jdbc.app.DB2ResultSet.getDate(DB2ResultSet.java:1494)
at com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.getDate(WSJdbcResultSet.ja)
at com.primeton.tp.core.dataservice.result.ResultAdapter.getDate(Result)
at com.primeton.tp.core.dataservice.result.ResultNodeImpl.getObjectForm)
at com.primeton.tp.core.dataservice.result.ExpandResultImpl.translateRe)
解决办法:修改操作系统的语言环境
LANG=zh;export $LANG
经验四、隐含提交乱码
隐行提交的界面中文输入中文保存,数据库中出现乱码,比如我们开源中的修改个人信息这个页面就是隐含提交的这种情况。这种乱码的解决办法是:修改was的配置文件ibm-web-ext.xmi文件中设置autoRequestEncoding和autoResponseEncoding成false,重启was
如果是集群环境下,需要考虑改主服务器ND下的ibm-web-ext.xmi文件,否则,只改从服务器而没有改主服务器ND下的ibm-web-ext.xmi,主服务ND会将ibm-web-ext.xmi覆盖掉从服务器的该文件
经验五、发送邮件在本地发不出去
如果调用fbsender.biz.bizEMailSend或者com.primeton.eos.bizlets.sender.Email.BL_sendMail的时候,确认配置没有任何问题,尽管telnet smtpServer 25端口没有问题,仍然发送不了邮件,很可能是跟防火墙是否设置禁止端口25有关系。
比如McAfee中有一个设置:打开VirusScan控制台,双击“访问保护”,有一项“禁止大量发送邮件的蠕虫病毒发送邮件 25”,把这一项不选中,再发送邮件即可,最近在解决示范公司一个发送邮件的问题就是这个原因引起。比如,McAfee的端口设置在附图中
经验六、chart在非Windows操作系统中无法显示图形
参考http://gocom.primeton.com/modules/newbb/forumtopic21_3362_7.htm
经验七、如果集群环境下需要考虑上传的文件是存放在数据库还是存放在文件目录下
经验八、乱码问题
现象:通过db2客户端工具插入的数据,程序读出来是乱码,而通过程序插入的数据,程序再读出来正常, 环境为AIX上的DB2 8.2,Linux上的WebSphere 6.0.2.15,EOS 5.1.2
解决过程:在window客户端输入命令:db2set DB2CODEPAGE=,然后将数据库重建,并在建库的时候就指定字符集UTF-8 (命令如下:create database sccrm using codeset UTF-8 territory CN),然后再初始化数据,发现读出来的数据都正常了
经验九、绑定多个IP时,网络设置问题不正确导致控制台访问不了
当服务器绑定多个IP的时候,且服务器又访问不了该IP,会发生访问控制台的时候,读不出控制台上的相关数据,这种现象可以查看一下eos控制台首页显示的IP和服务器的IP是否相同,如果不同且控制台显示的IP通过ping不通,就会出现前面描述的问题。解决该问题的办法是:找相关网络处的人检查网络是否配置正确,大家自己可以尝试打开/etc/hosts文件,找到"127.0.0.1 loopback localhost",将服务器的hostname放在localhost试试。这种问题一般出现在需要作ha,同时配置一个外网IP和内网IP且配置又不正确的情况下最容易出现该问题。
【注:eos的控制台eosmgr为了集群,访问控制台的信息是通过绑定到一个IP和一个端口30616】
经验十、对大表的操作要谨慎:特别是条件不能为空的时候
在对大表进行操作时,一定要保证查询条件的存在,不然,系统在某些情况下会造成读取大量数据到内存而造成系统死机或CPU100%的情况。而且最好不要在EOS平台中进行嵌套查询,也即一个查询结果集中包含另外一个根据上一结果的查询。如果有这样的需求,可以做多表关联在数据端执行这样的操作。
经验十一、工作流发布
在做工作流发布时,建议更新前“生成流程新版本”。因为如果直接更新流程时,系统会对正在执行的流程实例进行检验,所以发布时间很长。如果对流程有更新,最好是将版本号升级一下,这样生产系统中原来版本没有结束的流程还能够继续流下去,同时,还能因为少掉很多检验加快发布的效率。
【备注】
|
|
| 声明:本栏目转载文字、造型、样式、图形及程序如有来自网络,版权归原作者或首发媒体所有,欢迎任何个人访问或者转载,若有作者及出处有误,请来信说明,我们将及时更正。 |
|