Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jakarta ee 您不能在托管事务期间提交_Jakarta Ee_Jpa_Transactions_Cdi - Fatal编程技术网

Jakarta ee 您不能在托管事务期间提交

Jakarta ee 您不能在托管事务期间提交,jakarta-ee,jpa,transactions,cdi,Jakarta Ee,Jpa,Transactions,Cdi,我正在尝试持久化一个对象,但当我尝试持久化时,我得到了以下信息:“您不能在托管事务期间提交!” 我正在使用下面的事务拦截器来控制我的事务。 使用Wilfly 8.2 交易接收器 @SuppressWarnings("serial") @Interceptor @Transactional public class TransactionInterceptor implements Serializable{ @Inject private EntityManager manage

我正在尝试持久化一个对象,但当我尝试持久化时,我得到了以下信息:“您不能在托管事务期间提交!” 我正在使用下面的事务拦截器来控制我的事务。 使用Wilfly 8.2

交易接收器

@SuppressWarnings("serial")
@Interceptor
@Transactional
public class TransactionInterceptor implements Serializable{
    @Inject
    private EntityManager manager;

    @AroundInvoke
    public Object intercept(InvocationContext ctx) throws Exception{
        System.out.println("Abrindo a transação");
        EntityTransaction transaction = manager.getTransaction();

        transaction.begin();
        //Passando para o JSF tratar a requisição e pegando
        // o retorno da logica
        Object resultado = ctx.proceed();


            System.out.println("Comitando a transação");
            transaction.commit();


        return resultado;
    }

}
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.RequestScoped;
import javax.enterprise.inject.Disposes;
import javax.enterprise.inject.Produces;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceUnit;

@ApplicationScoped
public class EntityManagerProducer {
    @PersistenceUnit
    private EntityManagerFactory emf;

    @Produces
    @RequestScoped
    public EntityManager getEntityManager() {
        return emf.createEntityManager();
    }

    public void close(@Disposes EntityManager manager) {
        manager.close();
    }
}
beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
       version="1.1" bean-discovery-mode="all">      

       <interceptors>
        <class>br.com.bluemonster.tx.TransactionInterceptor</class>
       </interceptors>

</beans>
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
    xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="blueMonster" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>

        <jta-data-source>java:jboss/datasources/blueMonster-ds</jta-data-source>

        <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>

        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />

            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />

            <!-- poderia ser: update, create, create-drop, none -->
            <property name="hibernate.hbm2ddl.auto" value="update" />
            <property name="hibernate.cache.use_second_level_cache" value="true" />
            <property name="hibernate.cache.use_query_cache" value="true" />
            <property name="hibernate.generate_statistics" value="true" />
        </properties>
    </persistence-unit>
</persistence>
我是如何拜访我的豆子的

@Transactional
    public void adiciona(){
        dao.adiciona(colaborador);
    }
EntityManagerProducer

@SuppressWarnings("serial")
@Interceptor
@Transactional
public class TransactionInterceptor implements Serializable{
    @Inject
    private EntityManager manager;

    @AroundInvoke
    public Object intercept(InvocationContext ctx) throws Exception{
        System.out.println("Abrindo a transação");
        EntityTransaction transaction = manager.getTransaction();

        transaction.begin();
        //Passando para o JSF tratar a requisição e pegando
        // o retorno da logica
        Object resultado = ctx.proceed();


            System.out.println("Comitando a transação");
            transaction.commit();


        return resultado;
    }

}
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.RequestScoped;
import javax.enterprise.inject.Disposes;
import javax.enterprise.inject.Produces;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceUnit;

@ApplicationScoped
public class EntityManagerProducer {
    @PersistenceUnit
    private EntityManagerFactory emf;

    @Produces
    @RequestScoped
    public EntityManager getEntityManager() {
        return emf.createEntityManager();
    }

    public void close(@Disposes EntityManager manager) {
        manager.close();
    }
}

如果要使用资源本地事务管理,应修改
persistence.xml
。 而是
java:jboss/datasources/blueMonster-ds
write:
java:jboss/datasources/blueMonster-ds

修改
EntityManagerProducer

@ApplicationScoped
public class EntityManagerProducer {

    private EntityManagerFactory emf;

    @PostConstruct
    public void init() {
        emf = Persistence.createEntityManagerFactory("name");
    }

    @PreDestroy
    public void release() {
        emf.close();
    }

    @Produces
    @RequestScoped
    public EntityManager getEntityManager() {
        return emf.createEntityManager();
    }

    public void close(@Disposes EntityManager manager) {
        manager.close();
    }

}


如果要使用资源本地事务管理,应修改
persistence.xml
。 而是
java:jboss/datasources/blueMonster-ds
write:
java:jboss/datasources/blueMonster-ds

修改
EntityManagerProducer

@ApplicationScoped
public class EntityManagerProducer {

    private EntityManagerFactory emf;

    @PostConstruct
    public void init() {
        emf = Persistence.createEntityManagerFactory("name");
    }

    @PreDestroy
    public void release() {
        emf.close();
    }

    @Produces
    @RequestScoped
    public EntityManager getEntityManager() {
        return emf.createEntityManager();
    }

    public void close(@Disposes EntityManager manager) {
        manager.close();
    }

}


如果要使用资源本地事务管理,应修改
persistence.xml
。 而是
java:jboss/datasources/blueMonster-ds
write:
java:jboss/datasources/blueMonster-ds

修改
EntityManagerProducer

@ApplicationScoped
public class EntityManagerProducer {

    private EntityManagerFactory emf;

    @PostConstruct
    public void init() {
        emf = Persistence.createEntityManagerFactory("name");
    }

    @PreDestroy
    public void release() {
        emf.close();
    }

    @Produces
    @RequestScoped
    public EntityManager getEntityManager() {
        return emf.createEntityManager();
    }

    public void close(@Disposes EntityManager manager) {
        manager.close();
    }

}


如果要使用资源本地事务管理,应修改
persistence.xml
。 而是
java:jboss/datasources/blueMonster-ds
write:
java:jboss/datasources/blueMonster-ds

修改
EntityManagerProducer

@ApplicationScoped
public class EntityManagerProducer {

    private EntityManagerFactory emf;

    @PostConstruct
    public void init() {
        emf = Persistence.createEntityManagerFactory("name");
    }

    @PreDestroy
    public void release() {
        emf.close();
    }

    @Produces
    @RequestScoped
    public EntityManager getEntityManager() {
        return emf.createEntityManager();
    }

    public void close(@Disposes EntityManager manager) {
        manager.close();
    }

}

您可以尝试以下方法:

@SuppressWarnings("serial")
@Interceptor
@Transactional
@TransactionAttribute(TransactionAttributeType.SUPPORTS)
public class TransactionInterceptor implements Serializable{
我也遇到了同样的问题,我可以用这种方法解决。

您可以尝试以下方法:

@SuppressWarnings("serial")
@Interceptor
@Transactional
@TransactionAttribute(TransactionAttributeType.SUPPORTS)
public class TransactionInterceptor implements Serializable{
我也遇到了同样的问题,我可以用这种方法解决。

您可以尝试以下方法:

@SuppressWarnings("serial")
@Interceptor
@Transactional
@TransactionAttribute(TransactionAttributeType.SUPPORTS)
public class TransactionInterceptor implements Serializable{
我也遇到了同样的问题,我可以用这种方法解决。

您可以尝试以下方法:

@SuppressWarnings("serial")
@Interceptor
@Transactional
@TransactionAttribute(TransactionAttributeType.SUPPORTS)
public class TransactionInterceptor implements Serializable{


我也遇到了同样的问题,我能够用这种方式解决。

您想使用容器管理的事务还是本地事务?本地,但如果您有任何理由不让我感到自由,我正在使用JSF顺便问一下,您想使用容器管理的事务还是本地事务?本地,但是如果你有任何理由认为我不应该感到自由,我正在使用JSF顺便问一下,你想使用容器管理的事务还是本地事务?本地,但是如果你有任何理由认为我不应该感到自由,我正在使用JSF顺便问一下,你想使用容器管理的事务还是本地事务?本地,但是,如果您有任何理由认为我不应该感到自由,我使用JSF的方式已经改变,但返回了相同的错误-提交事务时出错-提交失败-无法针对JDBC连接提交-您无法在托管事务期间提交!如何获得EntityManager?我正在创建一个名为EntityManager Producer的类,使用CDI注入。使用EntityManagerFactory并获取.createEntityManager();我正在读一些,我想我可能会把我的aproach改成JTA。但我想知道为什么这不起作用…已更改,但返回相同的-提交事务时出错-提交失败-无法针对JDBC连接提交-您无法在托管事务期间提交!如何获得EntityManager?我正在创建一个名为EntityManager Producer的类,使用CDI注入。使用EntityManagerFactory并获取.createEntityManager();我正在读一些,我想我可能会把我的aproach改成JTA。但我想知道为什么这不起作用…已更改,但返回相同的-提交事务时出错-提交失败-无法针对JDBC连接提交-您无法在托管事务期间提交!如何获得EntityManager?我正在创建一个名为EntityManager Producer的类,使用CDI注入。使用EntityManagerFactory并获取.createEntityManager();我正在读一些,我想我可能会把我的aproach改成JTA。但我想知道为什么这不起作用…已更改,但返回相同的-提交事务时出错-提交失败-无法针对JDBC连接提交-您无法在托管事务期间提交!如何获得EntityManager?我正在创建一个名为EntityManager Producer的类,使用CDI注入。使用EntityManagerFactory并获取.createEntityManager();我正在读一些,我想我可能会把我的aproach改成JTA。但我想知道为什么这不起作用。。。