Hi Xedus,
and you do it inside a TX? Try to clear the EM before reading,
adam
xedus schrieb:
> Hello everyone,
>
> i'm runing a printing queue web service on glassfish v2, the clients ask for
> thier printing jobs and the server send it to them. After each successful
> print the client invoke a web service method to flag that certain job as
> being "done" so that the client will not have it sent to him again the next
> round when it askes for available printg jobs...
>
> it hapens many times that the new status "done" will not persist to the data
> base which leads to the pritnig job being sent over and over again.
>
> i tried container managed transactions and bean managed transaction with the
> same result. i even tried em.flush(), but no luck.....
>
> i'm using oracle toplink..
>
> here is how the code looks like .....
>
> .
> .
> .
> private void persist(Object obj){
> try{
> //ut.begin();
> //em.merge(obj);
> em.persist(obj);
> //ut.commet();
> }catch(Exception ex){ ...}
> }
> @webmethod
> public boolean markJobAsDone(long jobID){
> try{
> PrintingJob aJob = em.find(PrintingJob.class,jobID);
> aJob.setStatus("done");
> persist(aJob);
> }catch(Exception ex){
> return false;
> }
> return true;
> }
>
>
>
> also the clients are asking for jobs every 30 seconds
> another question, is there any other aproach to these queues and jobs?
>
> please help
>
>
>
> i just wanted to add that i can recreate the problem simply by changing the
> status of a job manualy form "SQL Developer" for example from "Done" to
> "pending" and the job will keep beibg sent and will never be set to "Done"
> again....
>
>
--
Consultant, Author, Java Champion
Homepage: www.adam-bien.com
Weblog: blog.adam-bien.com
eMail: abien_at_adam-bien.com
Mobile: 0049(0)170 280 3144
Books: Enterprise Architekturen (ISBN: 393504299X),
Java EE 5 Architekturen (ISBN: 3939084247),
J2EE Patterns, J2EE Hotspots, Enterprise Frameworks and Struts