存储过程' XXX'可能只在JBOSS 7服务器/ JCONN驱动程序4中的非链接事务模式错误中运行

时间:2017-05-29 11:22:45

标签: java jboss jboss7.x sybase jconnect

我目前正在将应用从 JBOSS 5 迁移到 JBOSS 7.0.4 。作为迁移的一部分,我还将Sybase驱动程序从Jconn3更改为Jconn4。我在使用jconn4.jar执行JBoss 7中的Sybase过程时收到以下错误:

2017.05.26 05:53:17 ERROR stderr(71): Caused by: com.sybase.jdbc4.jdbc.SybSQLException: Stored procedure 
'sp_update_trade_data' may be run only in unchained transaction mode. The 'SET CHAINED OFF' command will cause the current session to use unchained transaction mode.
2017.05.26 05:53:17 ERROR stderr(71): 
2017.05.26 05:53:17 ERROR stderr(71):   at com.sybase.jdbc4.tds.Tds.processEed(Tds.java:4131)
2017.05.26 05:53:17 ERROR stderr(71):   at com.sybase.jdbc4.tds.Tds.nextResult(Tds.java:3247)
2017.05.26 05:53:17 ERROR stderr(71):   at com.sybase.jdbc4.jdbc.ResultGetter.nextResult(ResultGetter.java:78)
2017.05.26 05:53:17 ERROR stderr(71):   at com.sybase.jdbc4.jdbc.SybStatement.nextResult(SybStatement.java:294)
2017.05.26 05:53:17 ERROR stderr(71):   at com.sybase.jdbc4.jdbc.SybStatement.nextResult(SybStatement.java:276)

在调用过程之前,我在应用程序数据层中明确调用 SET CHAINED OFF 命令。但我仍然得到以下错误。

我怀疑 JBOSS 7 中的某些设置会覆盖从应用程序调用的 SET CHAINED OFF 命令

使用Jconn3.jar驱动程序,JBOSS 5中的过程执行正常,没有错误 你能否解决这个错误。

2 个答案:

答案 0 :(得分:1)

假设没有更改存储过程的执行模式(通过sp_procxmode),我建议仔细看看jconn3和jconn4连接配置文件中的差异。

我猜jconn3有autocommit = true(在unchained事务模式下运行),而jconn4有autocommit = false(在链式事务模式下运行)。

答案 1 :(得分:1)

我通过将' unchained mode' 更改为' anymode '来解决了这个问题。在sybase程序中。
例如: EXEC sp_procxmode'',' anymode'
这将允许外部客户端(即JBoss容器)控制存储过程的事务。
它也将与本地客户一起工作,因此" Any"模式。