1.1 BugId=172659
bug描述
|
建档时间
|
终端回连数目为1000时,DMServer认证失败,即当终端回连数加大时,会偶尔出现认证失败的问题;
|
2011-07-29
|
【原因】计算MD5的工具类方法com.xxoo.dm.odomain.framework.tools.MD5#digest有问题,原因是不支持多线程处理。原来的代码如下:
public static byte[] digest(byte[] data) {
md.reset(); //md实例是不支持多线程的
return md.digest(data);
}
错误原因是MessageDigest类不支持多线程,现改成了如下的实现方式:
public static byte[] digest(byte[] data) {
return DigestUtils.md5(data);
}
1.2 BugId=176680
bug描述
|
建档时间
|
DMServer在边进行终端回连时边接收任务,会导致接收速度变慢
|
2011-09-05
|
【原因】这个问题的原因有两方面:
1. DMService模块和DMServer模块同时使用了一个logger的appender来输出日志,这样会造成两边有锁等待的现象;
2. DMService模块和DMServer模块同时使用了一个EJB的Locator,而这个实例内部也是有锁的,因此也会造成锁等待的情况出现;
现在的解决方法:
1. 修改log4j.xml,修改成了如下的配置,粗体是新增加的:
<logger name="com.xxoo.dm.odomain.dms" additivity="false">
<level value="DEBUG"/>
<appender-ref ref="FILE_EJB"/>
<appender-ref ref="FILE_EJB_ERR"/>
</logger>
。。。
<appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="./log/dmserver.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%-5p] [%d] [%t] method:%c%n%m%n"/>
</layout>
</appender>
<appender name="FILE_EJB" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="./log/dmservice.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%-5p] [%d] [%t] method:%c%n%m%n"/>
</layout>
</appender>
2. 拆分成使用两个EJB的Locator:
update_udpairinfo_ejb_config.xml 给DMServer的HTTP模块使用;
udinfomanagement_ejb_config.xml 给DMService模块使用;
分开成两个配置文件是因为JNDIServiceLocator-1.0.0.jar对同一个配置文件会生成一个对象锁,当两个模块都需要调用UDM的EJB时,就会存在锁等待问题,改成两个就不会出现这个问题了。
1.3 BugId=173444
bug描述
|
建档时间
|
smsdealer入队列数据量不对,即在某些情况下,会收到重复的自注册短信
|
2011-08-05
|
【原因】这个问题的原因是由jvm的Full GC造成的。
smsdealer模块从短信前置机接收短信后,需要向短信前置机回复响应应答,这个过程是有一个超时时间T的,当超过这个规定的超时时间,短信前置机还没有收到响应应答包,则短信前置机认为这条短信没有发送成功,就会将这条短信重新加入待发送的短信队列。而当jvm执行Full GC时,就会造成一定时间的停顿,若这个时间超过了上述规定的T,就会出现收到重复短信的问题。
目前的做法是将短信前置机的接收超时时间[RecvTimeOut=15]从15秒改成了60秒。
1.4 MyBatis缓存问题
问题:由于对ParamConfigRule.xml使用了缓存,即如下设置:
<cache-ref namespace="com.xxoo.dm.odomain.dms.dao.CommonDSUtilsDao"/>
<!--此命名空间的缓存策略配置如下-->
<cache eviction="LRU" size="5000" flushInterval="120000" readOnly="true"/>
因此mybatis会对此sqlmap文件中的所有select使用缓存,即查询结果会保存在缓存中,并且下次查询时会先从缓存中获取数据。
由于当时写代码的时候未考虑已经使用了缓存,因此加入了这样一行代码(见如下的粗体字):
ruleId = ruleIdList.get(0);
queryParamConfigRuleMap.put("ruleId", ruleId);
tmpParamConfigRuleList = (List<ParamConfigRule>) sqlSession
.selectList("com.ailk.dm.odomain.dms.dao.ParamConfigRuleDao.getParamConfigRules", queryParamConfigRuleMap);
if ((tmpParamConfigRuleList == null || tmpParamConfigRuleList.size() == 0)) {
throw new ParamConfigRuleNotExistsException("ParamConfigRule Not Exists with modelId=" + modelId
+ ", swv=" + swv + ", funcTypeId=" + funcTypeId);
}
paramConfigRuleList.addAll(tmpParamConfigRuleList);
tmpParamConfigRuleList.clear();
上面这一行粗体的代码会将当前查到的结果从缓存中删除,故下次调用此方法时,tmpParamConfigRuleList的结果实际就是空的,从而导致业务逻辑产生了异常。
解决方法是将上面这行代码删除,即在查询过程中不能清除使用了缓存策略的结果数据。
分享到:
相关推荐
SpringSource dm Server 架构介绍.doc SpringSource dm Server 架构介绍.doc
一个基于spring dm server 的osgi 例子,描述了一个简单用户登陆的例子,不同的用户验证方式,用不同的bundle
dm Server—first came out in April 2008, even though it was in the beta release, I immediately installed it on my machine and tried it out. Note that when it was in the beta release, the dm Server ...
学习OMA协议很好的源码参考。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...
Apress.pro.springsource.dm.server.pdf
Learn to use the core power of this OSGi™-based Java™ application server through examples!
funambol OMA DM Server source
从Sqlserver迁移到DM数据库介绍文档: 第 1 章 概述 2 第 2 章 移植过程 2 2.1 待移植系统分析 2 2.1.1 统计SqlServer数据库基础信息 2 2.1.2 统计SQLServer数据中的对象以及表数据量 2 2.2 准备移植环境 3 2.2.1 DM...
What is the TMS320DM365 digital media processor?
中国移动发布的CMCC DM 最新现网测试用例
至觉得用这种方式开发基于OSGi WEB应用比使用Spring DM Server更好至少目前你可以获得更好便携性(可以 在多个Spring DM支持OSGi平台上运行)并且Spring DM Server并没有提供更多企业应用支持 不过对于刚 使用Spring ...
本系统采用 TI Davinci系列的 DM365 芯片作为硬件平台,在 DM365 嵌入式视频监控设备上对人脸检测算法进行了相应的优化改进,利用改进的带加权判决函数的级联分类器,提高了检测的准确率。本系统具有成本低廉,检测...
About SpringSource.dm.Server
改造funambol_dm_server源码为eclipse工程, 方便测试研究, 内附SQL脚本, 可作为OTA相关项目的研究参照, funambol_dm_server完全遵照SYNCML协议, 对SYNCML的深入研究比较有帮助. 包内是个EAR工程, 包含EJB和WEB两部分...
达梦7性能调优基本原理
funambol-dm-server 移动设备管理服务器端源代码
TMS320DM6437 LED代码 测试程序
CentoOS 各种配置汇总,未来得及制作成chm 或 pdf 格式,均为HTML 的格式,希望对大家有用
Bootstrap is a process of provisioning the DM client to a state where it is able to initiate a management session to a new DM server. Bootstrap can move a device from an un-provisioned, empty state, ...
好东西,有用的可以下来参考!关于DM642开发的