package org.jboss.seam.example.seambay; import java.util.Date; import javax.persistence.EntityManager; import javax.persistence.LockModeType; import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Transactional; import org.jboss.seam.annotations.async.Asynchronous; import org.jboss.seam.annotations.async.Expiration; @Name("auctionEnd") public class AuctionEndAction { @In EntityManager entityManager; @Asynchronous @Transactional public void endAuction(int auctionId, @Expiration Date endDate) { System.out.println("Auction " + auctionId + " ending"); Auction auction = entityManager.find(Auction.class, auctionId); entityManager.lock(auction, LockModeType.WRITE); auction.setStatus(Auction.STATUS_COMPLETED); entityManager.merge(auction); } }