草庐IT

transaction-synchronized

全部标签

java - @Transactional 的自定义快捷方式注释不起作用

我正在尝试创建自定义注释以便快捷方式,正如文档中所引用的那样:@Target({ElementType.METHOD,ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Transactional("order")public@interfaceOrderTx{}但是,当我使用自定义注解对方法进行注解时,出现异常:Nohibernatesessionboundtothread,andconfigurationdoesnotallowcreation...等使用@Transactional注释该方法时效果很好。由于我注释的方法不属于

java - Spring Transactions 以确保跨 2 个 REST 服务的一致性?

我有2个RESTapi,我在“事务”中“保存”数据。我很想听听有关如何确保第二个出现问题时第一个可以“回滚”的建议。我目前有一个重试循环,如果失败,我会向第一个调用发送一个删除。它工作正常,我只是好奇是否可以使用spring事务来处理它。就此而言,还有其他选择吗? 最佳答案 如果像这样的事情是可能的,那将是非常有趣和有用的,但我认为这是不可能的,因为没有标准的API用于RESTAPI的提交/回滚,就像JDBCAPI一样。使用Spring,您永远不能简单地将方法标记为@Transactional,因为Spring不知道如何“回滚”您在

java - Quartz 作业抛出 InvalidDataAccessApiUsageException : no transaction is in progress;

我有一个非常简单的quartz作业,它试图从数据库中获取打印机记录,我收到此错误:org.springframework.dao.InvalidDataAccessApiUsageException:notransactionisinprogress;nestedexceptionisjavax.persistence.TransactionRequiredException:notransactionisinprogressjavax.persistence.TransactionRequiredException:notransactionisinprogress这是应用程序的代码

java - Hibernate、Spring、@Transactional - 围绕 try/catch?

我正在使用Spring3和Hibernate3.6开发一个网络应用程序。我对@Transactional注释和代码结构有一些疑问。->当我使用@Transactional(使用Spring进行事务管理)时,是否必须在调用它们时使用try/catch包围@Transactional注释的方法?例如,当我得到一个加载、更改并返回一个对象的方法时,我从另一个类调用它:我是否必须用try/catch包围调用?也许出了什么问题,没有返回对象,数据库连接失败..我不知道。直到现在,我认为@Transactional关心所有可能发生的异常,并在发生错误时回滚此事务中的每个操作。但如果它发生了,我必须

java - 同步块(synchronized block)是否有最大可重入限制?

众所周知,ReentrantLock有最大重入限制:Integer.MAX_VALUE;是否synchronized块也有可重入限制吗?更新:我发现很难为同步重入编写测试代码:publicclassSyncReentry{publicstaticvoidmain(String[]args){synchronized(SyncReentry.class){synchronized(SyncReentry.class){//...writesynchronizedblockforever}}}}任何人都可以帮助编写一些用于同步重入限制测试的代码吗? 最佳答案

java - synchronized java关键字是如何实现的?

在C#中,lock关键字是try/catchblock和Monitor实例的良好语法。在Java中,synchronized关键字使用什么同步类?编辑-我做了一些进一步的研究-看起来它被同步编译为monitorenter/monitorexit字节码操作。是否有一个类复制了这些语义? 最佳答案 没有使用类-它是由JVM处理的语言结构。但是,Java5引入了java.util.concurrent.locks你在哪里有Lock接口(interface)及其多种实现。有关示例用法,请参阅链接文档。

java - 如何使用 @Resource WebServiceContext 注入(inject) Spring 的 @Transactional

我有一个Metrojax-ws网络服务,看起来或多或少像这样:@WebService@TransactionalpublicclassUserManagementServiceImpl{@ResourceprivateWebServiceContextcontext;...}WebServiceContext总是空的。但是,如果我删除@Transactional,则会注入(inject)WebServiceContext。有人知道解决方法吗?谢谢。 最佳答案 我找到了解决方法。使用setter注入(inject)而不是字段注入(in

java - 与 Java 中的同步块(synchronized block)相比,新的 Lock 接口(interface)有什么优势?

与Java中的同步块(synchronizedblock)相比,新的Lock接口(interface)有何优势?您需要实现一个高性能缓存,允许多个读取器但单个写入器保持完整性,您将如何实现它? 最佳答案 锁的优点是让他们公平是可能的可以让线程在等待Lock对象时响应中断。可以尝试获取锁,但如果无法获取锁,则立即或超时后返回可以在不同的范围内以不同的顺序获取和释放锁请注意,这在javadocofLock中有解释。及其子类。可以使用ConcurrentMap实现高性能缓存。 关于java-与

java - 你如何重构@Transactional 方法来拆分非事务部分

我有一个作为独立Java应用程序的一部分运行的数据访问类。它目前正在工作,这意味着定义了一个事务管理器,但我想重构该类以减少事务的范围,但如果我这样做,我会得到org.hibernate.HibernateException:NoHibernateSessionboundtothread,andconfiguration不允许在此处创建非事务性,这意味着移动@Transactional以某种方式阻止了它被识别。我的原始版本的重构方法是私有(private)的,但我发现有人建议将其更改为公开的,因为在某些情况下注释不会被提取。publicclassDoStuff{@Transaction

java - synchronized(new Object()) 的用例

在最近的answer我建议可以通过在包含我们需要volatile的变量的对象上同步来实现volatile的功能(提问者没有可以访问代码中的变量)。这让我想到我实际上不需要阻塞包含对象,我只需要实现内存屏障。由于synchronized实现了两者同步和内存屏障,如果我只需要内存屏障(如本例),它实际上会更好吗使用synchronized(newObject())来实现我的内存屏障并确保锁永远不会被竞争? 最佳答案 如此处解释:http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-fa