java.sql.SQLException:您无法在托管事务期间提交

时间:2014-08-28 04:46:21

标签: java jboss datasource

在jboss 7中,我有以下配置

<datasource jndi-name="java:jboss/env/esilicon/vms/OracleDBPoolNonXA" pool-name="ExampleDS">
    <connection-url>jdbc:oracle:thin:@erptstdb.sc.kaka.com:14100:ERPTST</connection-url>
    <driver>XAOracleJDBCDriver</driver>
    <pool>
        <min-pool-size>10</min-pool-size>
        <max-pool-size>20</max-pool-size>
        <prefill>true</prefill>
    </pool>
    <security>
        <user-name>apps</user-name>
        <password>apps</password>
    </security>
</datasource>
<drivers>
    <driver name="XAOracleJDBCDriver" module="oracle.jdbc">
        <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
    </driver>
</drivers>

在其他课程中,我获得了获取数据源连接的方法

public static Connection getNonXAConnection() {
    try {
        InitialContext context = new InitialContext();
        DataSource dataSource = (DataSource)context.lookup(JNDILookup.PURE_CONNECTION_JNDI);
        return dataSource.getConnection();
    } catch (Exception e) {
        e.printStackTrace();
        logger.fatal(e.getMessage(), e.getCause());
    }
    return null;
}

提交此连接时发生错误

java.sql.SQLException: You cannot commit during a managed transaction!
 at org.jboss.jca.adapters.jdbc.BaseWrapperManagedConnection.jdbcCommit(BaseWrapperManagedConnection.java:981)
 at org.jboss.jca.adapters.jdbc.WrappedConnection.commit(WrappedConnection.java:757)

我只想获得连接并执行一些存储过程,并最终提交此连接。请帮帮我

2 个答案:

答案 0 :(得分:1)

使用这样的anotation:

@TransactionAttribute(TransactionAttributeType.SUPPORTS)
public class SchedulerBean {

我遇到了与Quartz相同的问题,并且能够以这种方式解决。

答案 1 :(得分:0)

在standalone.xml文件中指定了错误的远程处理地址时出现此错误。该值通常应为:

<socket-binding name="remoting" port="4447"/>

此值应设置为端口地址 在启动脚本中使用 -Djboss.socket.binding.port-offset = xxx选项应用的任何偏移量。