Java 存储过程&x27;XXX和x27;只能在JBOSS 7服务器/JCONN驱动器4中的未锁定事务模式错误下运行

Java 存储过程&x27;XXX和x27;只能在JBOSS 7服务器/JCONN驱动器4中的未锁定事务模式错误下运行,java,jboss,jboss7.x,sybase,jconnect,Java,Jboss,Jboss7.x,Sybase,Jconnect,我目前正在将应用程序从JBoss5迁移到JBoss7.0.4。作为迁移的一部分,我还将Sybase驱动程序从Jconn3更改为Jconn4。我在JBoss 7中使用jconn4.jar执行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

我目前正在将应用程序从JBoss5迁移到JBoss7.0.4。作为迁移的一部分,我还将Sybase驱动程序从Jconn3更改为Jconn4。我在JBoss 7中使用jconn4.jar执行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命令。但我仍然得到下面的错误

我怀疑jboss7中的某些设置正在覆盖从应用程序调用的SET CHAINED OFF命令

使用Jconn3.jar驱动程序的JBOSS 5中的过程执行良好,没有错误。

您能解决这个错误吗?

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


我猜jconn3的autocommit=true(在未锁定事务模式下运行),而jconn4的autocommit=false(在链接事务模式下运行)。

我通过在sybase过程中将未锁定模式更改为anymode,解决了这个问题。

例如:EXEC sp_procxmode'、'anymode'
这将允许外部客户机(即JBoss容器)控制存储过程的事务。
它也将与本地客户机一起工作,因此是“任意”模式

我在哪里可以设置/配置JBoss7中的链接关闭模式?我不使用JBOSS,所以我不知道确切的位置。。。但是,在“jboss autocommit”上快速搜索google会找到很多有用的信息。在jboss 7配置文件中,我可以在哪里设置/配置chained off模式?我尝试在独立配置文件中将set chained off添加到Sybase数据源中,但这也不起作用。