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....
--
View this message in context: http://www.nabble.com/Updated-Objects-Are-Not-Being-Persisted-tp18419023p18419023.html
Sent from the java.net - glassfish persistence mailing list archive at Nabble.com.