Which Oracle TopLink are you using? Can you turn on logging using the
persistence unit property "toplink.logging.level" "FINE"? Are you seeing
the status getting updated on the database through the EntityManager
calls? Are both components using the same persistence unit? Are you
sure that a transaction is active? What value is the method
"markJobAsDone" returning (true or false)?
--Gordon
xedus wrote:
> greetings,
>
>
>
> you mean doing a refresh before doing find to update?
> is there a way to prevent caching which i think the reason for this
> problem....?
>
> thank you
>
>
> Adam Bien wrote:
>
>> 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
>>
>>
>>
>>
>>
>>
>
>