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