I think async usage leadd to some random execution order. Ensure it is not
random then it should work
Le 2 nov. 2014 08:38, "Nrkkalyan" <[email protected]> a écrit :

> Hi
>
> Thank you. Can you please elaborate what do you mean by synchronously.
>
> Regards
> /Kalyan
> 0733312584
>
> PS: I am bad at spelling because I use mobile.
>
> > On 2 nov 2014, at 08:04, Romain Manni-Bucau <[email protected]>
> wrote:
> >
> > This is an app exception and surely a timing issue. Rewrite the app
> > synchronously it will work so i sadly think it is on your side
> > Le 1 nov. 2014 22:24, "Radhakrishna Kalyan" <[email protected]> a
> écrit :
> >
> >> Sorry
> >> Please find the exception at the following url
> >>
> >>
> >>
> https://drive.google.com/file/d/0B9j0dIS5bS0wYy1OOE5iaFNKaUU/view?usp=sharing
> >>
> >>
> >> On Sat, Nov 1, 2014 at 10:20 PM, Romain Manni-Bucau <
> [email protected]
> >> wrote:
> >>
> >>> Hi
> >>>
> >>> I dont see any attached file, can you gist or pastebin it?
> >>> Le 1 nov. 2014 21:23, "Radhakrishna Kalyan" <[email protected]> a
> >> écrit
> >>> :
> >>>
> >>>>
> >>>>
> >>>> Hi,
> >>>>
> >>>> Yesterday we had deployed our application in our production for the
> >> first
> >>>> time which was developed using OpenEJB standalone.
> >>>> But we got an exception after a while when we tried to perform certain
> >>>> operation.
> >>>> Please find the attached exception file.
> >>>>
> >>>> The application shall read certain data from a table(Invoice) in
> >> database
> >>>> and create an entry in an another table (BatchOrder). After that it
> >> shall
> >>>> create an xml message using that data
> >>>> and send to a jms queue.
> >>>> In the console log everything looks fine and the jms message has been
> >>> sent.
> >>>> In the console log the id of the newly created BatchOrder record is
> >>>> printed, but at the end when we check the database no record has been
> >>>> created in the table BatchOrder.
> >>>>
> >>>> The classes involved are 3:
> >>>> BatchManager
> >>>> BatchOrderDao
> >>>> OverdueBatchTimerService
> >>>>
> >>>> Here is the following code snippet of my application.
> >>
> ---------------------------------------------------------------------------------------------------------------------------
> >>>> @Stateless
> >>>> public class BatchManager{
> >>>>    @EJB
> >>>>    private BatchOrderDao batchOrderDao;
> >>>>
> >>>>    @Asynchronous
> >>>>    @Lock(LockType.READ)
> >>>>    public void createBatchMessage(...){
> >>>>        ...Some code to read Invoice table...
> >>>>
> >>>>        batchOrderDao.create(batchOrder);
> >>>>
> >>>>        ...Some more code to send jms message...
> >>>>
> >>>>    }
> >>>> }
> >>
> ---------------------------------------------------------------------------------------------------------------------------
> >>>> @Stateless
> >>>> public class BatchOrderDao{
> >>>>
> >>>>    @PersistenceContext(unitName = "datasource")
> >>>>    private EntityManager entityManager;
> >>>>
> >>>>    public void create(BatchOrder entity){
> >>>>        entityManager.persist(entity);
> >>>>        entityManager.flush();
> >>>>    }
> >>>>
> >>>>    @SuppressWarnings("unchecked")
> >>>>    public List<Long> findBatchesWithOverdueReceipts(final Date date) {
> >>>>        final Criteria criteria =
> >>>> getSession().createCriteria(BatchOrder.class);
> >>
> criteria.setProjection(Projections.distinct(Projections.property("iId")));
> >>>>        criteria.add(Restrictions.isNull("iAlarmed"));
> >>>>        ....Some more Restrictions.....
> >>>>        return criteria.list();
> >>>>    }
> >>>>
> >>>> }
> >>
> ---------------------------------------------------------------------------------------------------------------------------
> >>>> @Entity
> >>>> @Cacheable
> >>>> @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
> >>>> @Table(name = "BATCH_ORDER")
> >>>> public class BatchOrder {
> >>>>  private static final long serialVersionUID = 1L;
> >>>>
> >>>>  @Id
> >>>>  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator =
> >>> "IdSeq")
> >>>>  @SequenceGenerator(name = "IdSeq", sequenceName = "BOID_SEQ",
> >>>> allocationSize = 1)
> >>>>  @Column(name = "BO_ID", unique = true, nullable = false, updatable =
> >>>> false)
> >>>>  private Long iId;
> >>>>
> >>>>  @Column(name = "BO_ALARMED", unique = false, nullable = true,
> >> updatable
> >>>> = true)
> >>>>  private Date iAlarmed;
> >>>>
> >>>>  .... Some more fields....
> >>>>
> >>>> }
> >>
> ---------------------------------------------------------------------------------------------------------------------------
> >>>> @Singleton
> >>>> @Startup
> >>>> @Lock(LockType.READ)
> >>>> private class OverdueBatchTimerService{
> >>>>    @Inject
> >>>>    private BatchOrderDao dao;
> >>>>    @Resource
> >>>>    private TimerService timerService;
> >>>>    private static final long _5MINUTES_IN_MILLISECONDS = 5l * 60l *
> >>> 1000l;
> >>>>
> >>>>    @PostConstruct
> >>>>    public void initialize() throws Exception {
> >>>>        timerService.createSingleActionTimer(_5MINUTES_IN_MILLISECONDS,
> >>>> new TimerConfig());
> >>>>    }
> >>>>
> >>>>    @Timeout
> >>>>    public void onTimeout(final Timer timer) {
> >>>>        try{
> >>>>            .. Some Code....
> >>>>            dao.findBatchesWithOverdueReceipts(time);
> >>>>            .... Some more code....
> >>>>        } catch (final Exception ignore) {
> >>>>            LOG.error("Some exception occured while excecuting
> >> onTimeout,
> >>>> but IGNORED.", ignore);
> >>>>        } finally {
> >>>>
> >>>> timerService.createSingleActionTimer(_5MINUTES_IN_MILLISECONDS, new
> >>>> TimerConfig());
> >>>>        }
> >>>>    }
> >>>> }
> >>
> ---------------------------------------------------------------------------------------------------------------------------
> >>>>
> >>>> Please let me know if I am making any mistake.
> >>>>
> >>>>
> >>>> --
> >>>> Thanks and Regards
> >>>> N Radhakrishna Kalyan
> >>>>
> >>>> P:  +46 733 312 584
> >>>> http://about.me/nrkkalyan
> >>>> <http://about.me/nrkkalyan>
> >>
> >>
> >>
> >> --
> >> Thanks and Regards
> >> N Radhakrishna Kalyan
> >>
> >> P:  +46 733 312 584
> >> http://about.me/nrkkalyan
> >> <http://about.me/nrkkalyan>
> >>
>

Reply via email to