Dynamics AX 2012 R2 AIF自定义服务中的事务回滚Bug
Reinhard在一个Customer Service里的一个Method中,发现一个Transcation RollBack Bug。先看该Method的代码:
[SysEntryPointAttribute(true)]
public void SomeMethod()
{
ttsbegin;
createJournalTable;
createJournalLine;
ttsend;
try
{
//throw error inside postJournalTable
throw error('some error message');
}
catch
{
//Could not catch Exception::Error
}
}
在这个Method中,有一个创建Journal的Transcation,在Transcation外面,有一个 Try Catch Block,用于捕获Exception。
Reinhard发现如果Exception是Error类型的话,Reinhard的Try Catch Block是捕捉不到的。会导致Whole Method RollBack。也就是说,Journal不会被创建。
如果Exception的类型是Error以外的类型,Reinhard的Try Catch Block可能捕捉得到。In this case,Journal 可以被创建。
Reinhard查了很多资料,Some Guy 说,是因为Aif Framework Core Code中,有一个Big Transcation导致的。
在Reinhard的例子里,Reinhard要在Try Catch Block中执行PostJournal操作。Reinhard不是很关心该操作的执行结果——成功,还是失败。但是该操作如果产生Error类型的Exception的话,会导致Whole Method RollBack,Journal也不会被创建。
解决方案是,将可能导致Error的PostJournal的操作剥离出来,放到一个Batch中,定时执行。
Dynamics AX 2012 R2 AIF自定义服务中的事务回滚Bug的更多相关文章
- Dynamics AX 2012 R2 AIF 错误 '/MicrosoftDynamicsAXAif60' 应用程序中的服务器错误
Reinhard在使用AIF的时候,服务端收到如下错误提示之一,并触发InsufficientMemoryException 和ServiceActivationException异常,那么代表你服务 ...
- Dynamics AX 2012 R2 AIF 内部异常
今天,Reinhard发现某个入站端口,突然一直报错: The server was unable to process the request due to an internal erro ...
- Dynamics AX 2012 R2 AIF No Endpoint Behavior Named 'clientEndpointBehavior'
最近,Reinhard在使用Http Adapter类型的AIF入站端口时,总是报以下错误: Server Error in '/MicrosoftDynamicsAXAif60' App ...
- Dynamics AX 2012 R2 AIF 内部异常 output session was auto-closes
今天调用AIF出现异常,异常信息如下 This chanel can no longer be used to send message as the output session was auto- ...
- Dynamics AX 2012 R2 安装Reporting Services 扩展
今天Reinhard在VS中部署SSRS报表时,接到以下错误: 部署因错误而被取消.在报表服务器上,验证:-SQL Server Reporting Services 服务是否正在运行. 接着,Rei ...
- Dynamics AX 2012 R2 如何处理运行时间较长的报表
当处理的数据量较多,逻辑比较复杂时,报表可能会超时.为了解决这个问题,Reinhard一直使用SrsReportDataProviderPreProcess来做预处理报表.它会在调用SSRS前,在AX ...
- Dynamics AX 2012 R2 安装额外的AOS
众所周知,AX系统分为三层:Client,Application Server,Database Server. 我们添加额外的Application Server主要是出于以下两个原因: 使用多台服 ...
- Dynamics AX 2012 R2 电子邮件广播错误 0x80040213
Dynamics AX 2012 R2 电子邮件广播错误 0x80040213 今天Reinhard在新环境做邮件广播测试时,发现无法发送邮件,并报以下错误: 类"CDO.Message&q ...
- Spring中@Transactional事务回滚
转载: Spring中@Transactional事务回滚 一.使用场景举例 在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用.下面举个栗子:比如一个部 ...
随机推荐
- 通过button返回一个action,跳转到一个view
可以参考采购单的右侧按钮的写法. 简单讲,就是先通过xmlid获取到action_id,继而获取到action,修改action的相关信息,然后将结果返回,即可以实现跳转. mod_obj = sel ...
- hao123列表的实现
<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" co ...
- super()和this()的区别
1)调用super()必须写在子类构造方法的第一行,否则编译不通过.每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错. 2)supe ...
- Codeforces Round #196 (Div. 2)
A 题意:O(-1) 思路:排个序搞定. B 题意:O(-1) 思路:坑了我好久,这个框框水平垂直比例固定,分两种情况即可,不能旋转,我想多了,分了四种情况. C 题意:一列n个位置,让你填m个数,当 ...
- NeuSoft(4)编写字符设备驱动
1.要求:实现简单的字符设备驱动程序 2.源码清单 #include <linux/module.h> #include <linux/types.h> #include &l ...
- C#编程总结 字符转码
为了适应某种特殊需要,字符需要根据规则进行转码,便于传输.展现以及其他操作等. 看看下面的转码,就知道他的用处了. 1.字符串转码 根据原编码格式与目标编码格式,完成转换.不过可能出现乱码哦.上一章已 ...
- 《迷宫》特点分析之NABCD
项目名称:迷宫 特点之一:死亡模式 特点描述:在路径上设置一个个点,每个点作为一个障碍或加成点,设置各种类型陷阱来减少角色血量,还有加血和各种加成设置. N:普通迷宫形式单一,游戏过程较平淡,缺乏一定 ...
- 带你玩转JavaWeb开发之三 - CSS从基础到实战
一,什么是CSS? Cascading Style Sheets层叠样式表 层叠:就是层层覆盖叠加,如果有多种样式对同一html标签进行修饰,样式有冲突的部分应用优先级高,不冲突的 ...
- jq 获取除节假日与周六日 外的日期 和 星期
//设置节假日的数组 var holiday = Array('2016-04-30','2016-05-01','2016-05-02','2016-06-09','2016-06- ...
- Hibernate @Formula
在使用Hibernate时经常会遇到实体类某个字段存的是code值而非我们最终想要的中文具体显示的值, 如果使用Hibernate的一对一关联这种,一个属性还好说,但是如果一个实体类里有多个字段都是需 ...