环境:SOLARIS9、Webloic 8.1.5、EOS5.1
一:乱码问题。
难度指数:★★
折磨人指数:★★★★★
乱码问题其实是任何一个运行在非windows系统之上的J2EE项目都要遇到的典型问题。
这次的项目,系统需要从一个sybase的数据库里获取一些历史数据
每次取出的都是乱码。
这个问题解决方法,其实就是用java方法:
new String(strValue.getBytes("ISO-8859-1"),"GB2312");转换一下就可以了。
但是我为什么要说乱码问题的折磨人指数是5颗星呢?我要说的是另外一个乱码问题。
系统发布到solaris服务器上以后,客户神秘地对我说:我们遇到一个巨大的问题。
我立刻紧张,他幽幽地说:全是乱码。
我立刻登录到EOS管理控制台发现我们发布的流程,全是????
解决方法是:在启动文件的参数里加入:-Dfile.encoding=GBK即可。
之所以说它折磨人,是因为我为了完善,又多加了一句:-Dxml.encoding=GBK
这下,整个系统都乱套了,连发布个构建包这样简单的事情都无法完成了
然后卸载EOS重装也不行。最后得知要删除根目录所有跟EOS有关的文件,然后重新装。
于是我删除了.primeton,.eosreg这些文件,重新装了以后就好了。
最后在启动文件里只加入 -Dfile.encoding=GBK。OK,一切搞定。
就这样,弄完这些,已经是夜里12点半了。
经验总结:
第一:在非windows的操作系统上,一定要在启动参数里加:-Dfile.encoding=GBK,而且只加这一句就好。
第二:EOS卸载重装,要完全删除注册文件,.primeton和.eosreg,否则装了也有问题。
二:补丁问题。
难度指数:★★★
折磨人指数:★★★★★
这个问题的起因是因为定时器的问题。
一个完全正确的业务逻辑,当把它注册为定时器的时候,就会报:导入数据为空的错误
检查EOS的版本,发现运行在服务器上的EOS server没有升级。
立刻升级,却发现怎么升级都不成功。在solaris9的环境下面,没有办法打补丁。
最后不得已,进行了手动升级。
手动升级步骤如下:
首先,在windows环境下装好EOS5.1.1,并打好补丁。
其次,将自己环境下安装好的eos,完全上传到solaris下面
再次,修改EOS_HOME下配置文件:
startWebLogic.sh , log4j-config.properties,sorounding.properties
把这些文件里和系统目录有关的都改成服务器上的对应目录.
再次,启动weblogic,发布web应用即可
升级成功后,定时器问题立刻解决,不知道多完美.
经验总结:windows环境下和非windows环境下装好的EOS是一样的,可以互相覆盖,只是配置文件不一样.
但是,如果非万不得已,还是不要用手工升级,毕竟在我们不熟知的系统下容易进行误操作
到头来反而会一塌糊涂.
三:Webservice问题。
难度指数:★★★
折磨人指数:★★★
将EOS的业务构件发布成Webservice是非常简单的事情,可是不要因为简单就掉以轻心了。
我得意洋洋地把axis包里的配置文件修改了。然后,启动weblogic,发现失败了。
然后请教同事,才知道,在weblogic里发布webservice需要把几个axis需要的包加入到classpath里。
在jboss下面则不需要。
在weblogic里发布webservice的步骤如下:
首先,修改EOS_HOME下的axis包里的WEB-INF/server-config.wsdd文件
加入:
<service name="BizService" provider="java:RPC">
<parameter name="allowedMethods" value="*"/>
<parameter name="className" value="com.primeton.tp.core.bizservice.ws.ProcessCallerWS"/>
</service>
其次,在weblogic启动文件里,在classpath里加入如下的jar包:
set CLASSPATH=%EOS_HOME%\lib\axis-ant.jar;%CLASSPATH%
set CLASSPATH=%EOS_HOME%\lib\axis.jar;%CLASSPATH%
set CLASSPATH=%EOS_HOME%\lib\jaxrpc.jar;%CLASSPATH%
set CLASSPATH=%EOS_HOME%\lib\wsdl4j.jar;%CLASSPATH%
set CLASSPATH=%EOS_HOME%\lib\antlr.jar;%CLASSPATH%
set CLASSPATH=%EOS_HOME%\lib\commons-discovery.jar;%CLASSPATH%
set CLASSPATH=%EOS_HOME%\lib\velocity-1.3.1.jar;%CLASSPATH%
如果是solaris,语法应该有所不同
CLASSPATH=$EOS_HOME/lib/axis-ant.jar:$CLASSPATH
CLASSPATH=$EOS_HOME/lib/axis.jar:$CLASSPATH
CLASSPATH=$EOS_HOME/lib/jaxrpc.jar:$CLASSPATH
CLASSPATH=$EOS_HOME/lib/wsdl4j.jar:$CLASSPATH
CLASSPATH=$EOS_HOME/lib/antlr.jar:$CLASSPATH
CLASSPATH=$EOS_HOME/lib/commons-discovery.jar:$CLASSPATH
CLASSPATH=$EOS_HOME/lib/velocity-1.3.1.jar:$CLASSPATH
再次,如果在SOLARIS下,则还要删除EOS_HOME/EOSServer下的缓存文件,否则,Weblogic总是说ladap错误.
这一点很重要.
最后,重新启动weblogic,webservice发布成功.至于如何调用,请参考相关文档,这里不赘述
经验总结: 在weblogic环境下,发布webservice,要把axis相关包加入到环境变量里
另外,在solaris下发布,也需要删除缓存文件,否则启动weblogic就会报错.
四:EOS与其它系统集成问题(一)
难度指数:★★★
折磨人指数:★★
客户原有一套体系架构,EOS仅仅用于工作流部分.客户原有系统是servelet和jsp以及javabean写的.
调用EOS相关部分的业务时,需要用到隐含登录.
隐含登陆的含义就是,在调用目标展现逻辑以前,先在应用的session中生成EOS需要的sessioncontext
然后再进入到目标展现逻辑中.
经验总结:用户认证已经在客户原有的认证体系中验证过.
所以,在隐含登录中,可以免去密码验证的部分,直接对session进行相应的包装即可
五:EOS与其它系统集成的问题(二)
难度指数:★★★
折磨人指数:★★
由于这次客户拥有自己的组织机构和角色的模块,组织机构部分和EOS自带的那套相差不多,角色部分就有比较大的区别.
用到工作流部分的时候,可以有以下两种解决方法:
1. 直接改写组织机构那19个接口.
2.参与者设置都写成从相关数据区里获取或者是从活动中获取.
直接按照他们的数据模型结构把相应的参与者抽取出来,放入到相关数据区去.
用这个方法的前提是:保证参与者不会很多.
否则会造成瓶颈.
经验总结:与客户原有系统架构集成是经常遇到的问题,隐含登录以及改写组织机构接口可以很好的解决问题. |