尽展体育的魅力,创造历史辉煌!2008让我们为奥运加油,为中国加油!
 
 奥运金牌榜
  
  高级搜索
  首页   技术论坛   博客   产品中心   资源中心   银弹在线   商城  

 
  本文的标签
EOS (收录1999篇)EOS知识库 (收录437篇)EOS项目经验分享 (收录8篇)
  SOA2007 - SOA实践
我们何时迈向SOA
——SOA在中国的整体发展现状究竟如何?
我们如何迈向SOA
——中国企业如何迈出实施SOA的第一步?
我们应采用何种技术
——SOA国际标准SCA/SDO的具体内涵?
我们还需要何种技能
——SOA将如何改变系统架构设计以及项目管理过程?

项目支持中的经验分享


发布时间:2006-04-29 00:00:00 作者:cservice 出处:goComDevCenter 语言:中文 阅读次数:2850

环境: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.参与者设置都写成从相关数据区里获取或者是从活动中获取.
直接按照他们的数据模型结构把相应的参与者抽取出来,放入到相关数据区去.
用这个方法的前提是:保证参与者不会很多.
否则会造成瓶颈.

经验总结:与客户原有系统架构集成是经常遇到的问题,隐含登录以及改写组织机构接口可以很好的解决问题.

 评论 查看全部评论

 

声明:本栏目转载文字、造型、样式、图形及程序如有来自网络,版权归原作者或首发媒体所有,欢迎任何个人访问或者转载,若有作者及出处有误,请来信说明,我们将及时更正。