websphere集群环境下使用sqlserver XA存储EJB Timer的 xa_rollback异常处理
来源:互联网 发布:淘宝卖家添加销售属性 编辑:程序博客网 时间:2024/05/04 15:36
感觉国内还是Tomcat用的多啊,自从跳槽,接触的都是JBoss,WebSphere,weblogic什么的,看来环境不一样,用的东西真是差太多了。
记录下来到这里后遇到的第一个问题。
问题描述:公司产品使用的EJB Timer实现任务调度(我X),结果在WAS集群环境发现EJB Timer启动出现异常,异常信息(红毛儿语言,〇疼):
问题背景和解决方案:
首先,集群环境为了保证各节点的Timer同步,舍弃了WAS自带的Timer持久化,而使用我们自己的数据库作为WAS存储Timer数据的地方。WAS存储Timer的四张表:"LMGR","LMPR","TASK","TREG"。
其次,因为不同的节点,所以要使用分布式事务(XA),SQLServer在2012之前默认是不启用这个功能的,需要手动实现,配置方式详见http://guanzhilibai.blog.163.com/blog/static/13587993201171052712887/
记录一下基本步骤:
再次,依据上面所说的,在WAS中创建Scheduler,并且使用这个XA的数据源和sqljdbc4的驱动。
问题出现后,发现数据库中WAS的表已经创建,已经确定XA配置无误。
在WAS的Resources--Schedulers中点击Drop table,报错无法删除。
在数据库中手动Drop table(那四个表),再回到WAS的schedulers中点击Create table,问题解决。
原因不明,估计这四个表是在XA没配置好的时候就创建了,再使用XA导致出现异常。
记录一下供日后使用。
记录下来到这里后遇到的第一个问题。
问题描述:公司产品使用的EJB Timer实现任务调度(我X),结果在WAS集群环境发现EJB Timer启动出现异常,异常信息(红毛儿语言,〇疼):
data(000001473dcb128200000001000000790307be0ccbedc421199f30b5b214d3174ae0cade000001473dcb128200000001000000790307be0ccbedc421199f30b5b214d3174ae0cade000000010000000000000000000000000001)}: javax.transaction.xa.XAException: Функция ROLLBACK: завершилась ошибкой.Состояние: -4. Ошибка: "*** SQLJDBC_XA DTC_ERROR Context: xa_rollback,state=1, StatusCode:-4 (0xFFFFFFFC) ***". atcom.microsoft.sqlserver.jdbc.SQLServerXAResource.DTC_XA_Interface(SQLServerXAResource.java:550) atcom.microsoft.sqlserver.jdbc.SQLServerXAResource.rollback(SQLServerXAResource.java:718) atcom.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl.rollback(WSRdbXaResourceImpl.java:1321) atcom.ibm.ejs.j2c.XATransactionWrapper.rollback(XATransactionWrapper.java:1303)
问题背景和解决方案:
首先,集群环境为了保证各节点的Timer同步,舍弃了WAS自带的Timer持久化,而使用我们自己的数据库作为WAS存储Timer数据的地方。WAS存储Timer的四张表:"LMGR","LMPR","TASK","TREG"。
其次,因为不同的节点,所以要使用分布式事务(XA),SQLServer在2012之前默认是不启用这个功能的,需要手动实现,配置方式详见http://guanzhilibai.blog.163.com/blog/static/13587993201171052712887/
记录一下基本步骤:
- 1.MSDTC中启动XA功能
- 2.将sqljdbc_xa.dll拷贝到SQLServer的Binn目录
- 3.执行xa_install.sql存储脚本,会在master表的Programability--Extended Stored Procedures下生成一堆存储过程,并且生成一个新的role:sqlJDBCXAUser。在你要使用的用户设置中,UserMapping-->选中master行-->勾选下面的sqlJDBCXAUser即可。
- 4.应用中必须使用SQLServer提供的sqljdbc4.jar这个Driver
再次,依据上面所说的,在WAS中创建Scheduler,并且使用这个XA的数据源和sqljdbc4的驱动。
问题出现后,发现数据库中WAS的表已经创建,已经确定XA配置无误。
在WAS的Resources--Schedulers中点击Drop table,报错无法删除。
在数据库中手动Drop table(那四个表),再回到WAS的schedulers中点击Create table,问题解决。
原因不明,估计这四个表是在XA没配置好的时候就创建了,再使用XA导致出现异常。
记录一下供日后使用。
0 0
- websphere集群环境下使用sqlserver XA存储EJB Timer的 xa_rollback异常处理
- 使用atomikos处理ActiveMQ在Spring环境的XA事务
- WebSphere集群中调用EJB的方法
- WebSphere下配置 Oracle XA数据源
- websphere集群在DNS主服务器宕机后异常的处理办法
- Cluster环境下周期性timer job的单例处理
- Websphere集群环境下因修改时间而导致的节点停止,节点同步失败问题解决
- 如何实现WebSphere Application Server 6集群环境下的定时服务
- WebSphere下用JNDI查找EJB需要注意的问题
- websphere集群环境下客户端访问没有响应
- EJB 的异常处理的最佳做法
- EJB 异常处理的最佳做法
- EJB 异常处理的最佳做法
- Websphere Application Server 7下Apache Tiles 2.2的异常处理
- EJB timer在glassfish集群中的部署
- 在 WebSphere Studio 中配置并使用 XA 分布式事务
- 在 WebSphere Studio 中配置并使用 XA 分布式事务
- 中间件websphere集群环境JDBC的保存位置
- 2015腾讯暑期实习武汉站面试经历
- 百度统计之百度代码引用
- CKEditor在IE8,9中setReadOnly时报没有权限异常
- 欢迎使用CSDN-markdown编辑器
- 关于使用CyclicBarrier使主线程等待子线程执行完之后再向下执行的问题
- websphere集群环境下使用sqlserver XA存储EJB Timer的 xa_rollback异常处理
- java.lang.NoSuchFieldError
- MySQL与SQLServer的update left join语法区别
- JBoss和Tomcat部署方式的区别(解释暴露式部署)
- Eclipse Juno(j2ee)开发环境下JBoss热部署的实现方式(暴露式部署,WTP)
- linux中source命令的用法
- JasperReport表头的stretchType属性无效的解决
- Drools引发的PermGen OOM异常的跟踪
- Swing实现最简单连连看的思路和源码