Could you post the actual offending code? It looks like, from your stacktrace, its in
com.PCPgo.prm.web.patient.PatientLiteAction.execute(PatientLiteAction.java:241)
If its already in the message just highlight or something so its easy to find :)
Also, can you check your other stacktraces to see if this is the only place that this
is happening? As you said it was happening quite a bit with more users on the system
I'm just wondering if its just a single method problem or an overall design issue.
The only reason I can think that this would happen is because your Database references
are getting confused/used by the wrong classes and this can happen easily in web-apps.
Quick question, is your myDb variable local to the method? Or is it a class variable?
-Nick
-------Original Message-----
--From: Aditya Akella [mailto:[EMAIL PROTECTED]
--Sent: Friday, May 28, 2004 2:53 PM
--To: [EMAIL PROTECTED]
--Subject: Re: [castor-user] Transaction not in progress
--
--
--Thanks Nick for the fast reply.
--
--Thing is synchronization is a over kill for my webapp as
--there will be many users on the system at a given time.
--
--Yes, I'm using connection pooling and I get only one
--connection when the transaction begins, and too many hits to
--the database also is not good. It will slow down the system.
--
--Any other thoughts other than synchronization?
--
--Aditya.
--
-------Original Message-----
--From: Nick Stuart [mailto:[EMAIL PROTECTED]
--Sent: Friday, May 28, 2004 11:12 AM
--To: [EMAIL PROTECTED]
--Subject: Re: [castor-user] Transaction not in progress
--
--
--It sounds like you have a synchronization issue. Have you
--tried making the said method synchronized or maybe even just
--the offending transaction? I often take the practice of
--making all my write actions to the database synchronized.
--Might be a bit over-kill but it seems to work for me at least.
--
--This is kind of odd because you are getting a new database
--each time, and the first think that comes to mind is if you
--are using connection pooling or do just have one connection
--to the database? (not sure if it would matter).
--
--
---Nick
--
---------Original Message-----
----From: Aditya Akella [mailto:[EMAIL PROTECTED]
----Sent: Friday, May 28, 2004 2:02 PM
----To: [EMAIL PROTECTED]
----Subject: [castor-user] Transaction not in progress
----
----
----Hi All,
----
----I'm getting error for the following code snippet
----
----
----......//some code
----PatientForm ptForm = (PatientForm)form; --......//some code
----myDb = jdo.getDatabase(); --myDb.begin();
----
---- PatientBizDelegate.processFillUpLists(ptForm,myDb);//this
----method has will fill up 8 Lists and set them to the form obj.
----Data is filled up from cache(all these lists will be using castor).
---- forward =
----PatientBizDelegate.processAddUpdateOfPatient(ptJdo,ptForm,forw
----ard,logOutput,
----myDb);
----myDb.commit();
----myDb.close();
----
----
----here is the method for processFillUpLists
----
----public static final PatientForm
----processFillUpVectors(PatientForm patientForm, Database
--myDb) --throws PersistenceException {
---- List ptypeList = PatientLiteDB.getPatientType(myDb);
---- List relcationList= PatientLiteDB.getPatientRelationCode(myDb);
---- List pssList= PatientLiteDB.getSignatureSource(myDb);
---- List psaList= PatientLiteDB.getSourceOfAdmissionList(myDb);
---- List mpList= ProviderDB.getMainProviderJdoList(myDb);
---- .......... //here rest of the code follows
---- return patientForm;
----}
----
----here is the code snippet for one of the above methods, and
----the rest will be of the same pattern.
----
----public static final List getPatientRelationCode(Database
----myDb) throws PersistenceException {
---- List prcList = new ArrayList();
---- OQLQuery productOql = myDb.getOQLQuery("SELECT obj FROM
----com.PCPgo.prm.web.util.PatientReleaseCode obj");
---- QueryResults results = productOql.execute(Database.ReadOnly);
---- while (results.hasMore())
---- {
---- prcList.add(results.next());
---- }
---- results.close();
---- productOql.close();
---- return prcList;
----}
----
----NOTE: All the above code works fine when a single user
--using --the system. If I've more than 2 users I'm getting the
----following error more often. This also happens when we are
----testing with more than 3 virtual users.
----
----
----java.lang.IllegalStateException: Transaction not in progress
------ must open a transaction in order to perform this operation
---- at
----org.exolab.castor.persist.TransactionContext.prepare(Transacti
----onContext.java
----:1434)
---- at
----org.exolab.castor.jdo.engine.DatabaseImpl.commit(DatabaseImpl.
----java:528)
---- at
----com.PCPgo.prm.web.patient.PatientLiteAction.execute(PatientLit
----eAction.java:2
----41)
---- at
----org.apache.struts.action.RequestProcessor.processActionPerform
----(RequestProces
----sor.java:465)
---- at
----org.apache.struts.action.RequestProcessor.process(RequestProce
----ssor.java:274)
---- at
----org.apache.struts.action.ActionServlet.process(ActionServlet.j
----ava:1422)
---- at
----org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:505)
---- at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
---- at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
---- at
----org.apache.catalina.core.ApplicationFilterChain.internalDoFilt
----er(Application
----FilterChain.java:247)
---- at
----org.apache.catalina.core.ApplicationFilterChain.doFilter(Appli
----cationFilterCh
----ain.java:193)
---- at
----org.apache.catalina.core.StandardWrapperValve.invoke(StandardW
----rapperValve.ja
----va:260)
---- at
----org.apache.catalina.core.StandardPipeline$StandardPipelineValv
--eContext.invok
----eNext(StandardPipeline.java:643)
---- at
----org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
----ine.java:480)
---- at
----org.apache.catalina.core.ContainerBase.invoke(ContainerBase.
--java:995)
---- at
----org.apache.catalina.core.StandardContextValve.invoke(StandardC
----ontextValve.ja
----va:191)
---- at
----org.apache.catalina.core.StandardPipeline$StandardPipelineValv
--eContext.invok
----eNext(StandardPipeline.java:643)
---- at
----org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
----ine.java:480)
---- at
----org.apache.catalina.core.ContainerBase.invoke(ContainerBase.
--java:995)
---- at
----org.apache.catalina.core.StandardContext.invoke(StandardContex
----t.java:2396)
---- at
----org.apache.catalina.core.StandardHostValve.invoke(StandardHost
----Valve.java:180
----)
---- at
----org.apache.catalina.core.StandardPipeline$StandardPipelineValv
--eContext.invok
----eNext(StandardPipeline.java:643)
---- at
----org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDi
----spatcherValve.
----java:170)
---- at
----org.apache.catalina.core.StandardPipeline$StandardPipelineValv
--eContext.invok
----eNext(StandardPipeline.java:641)
---- at
----org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReport
----Valve.java:172
----)
---- at
----org.apache.catalina.core.StandardPipeline$StandardPipelineValv
--eContext.invok
----eNext(StandardPipeline.java:641)
---- at
----org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
----ine.java:480)
---- at
----org.apache.catalina.core.ContainerBase.invoke(ContainerBase.
--java:995)
---- at
----org.apache.catalina.core.StandardEngineValve.invoke(StandardEn
----gineValve.java
----:174)
---- at
----org.apache.catalina.core.StandardPipeline$StandardPipelineValv
--eContext.invok
----eNext(StandardPipeline.java:643)
---- at
----org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
----ine.java:480)
---- at
----org.apache.catalina.core.ContainerBase.invoke(ContainerBase.
--java:995)
---- at
----org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.
----java:223)
---- at
----org.apache.coyote.http11.Http11Processor.process(Http11Process
----or.java:405)
---- at
----org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandle
--r.processConne
----ction(Http11Protocol.java:380)
---- at
----org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoi
----nt.java:508)
---- at
----org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
--ThreadPool.jav
----a:533)
---- at java.lang.Thread.run(Thread.java:534)
----
----Thanks,
----Aditya
----
----
----
---------------------------------------------------------------
----If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
---- unsubscribe castor-user
----
----
-------
----Incoming mail is certified Virus Free.
----Checked by AVG anti-virus system (http://www.grisoft.com).
----Version: 6.0.691 / Virus Database: 452 - Release Date: 5/26/2004
----
----
--
-----
--Outgoing mail is certified Virus Free.
--Checked by AVG anti-virus system (http://www.grisoft.com).
--Version: 6.0.691 / Virus Database: 452 - Release Date: 5/26/2004
--
--
--
-------------------------------------------------------------
--If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
-- unsubscribe castor-user
--
-----
--Incoming mail is certified Virus Free.
--Checked by AVG anti-virus system (http://www.grisoft.com).
--Version: 6.0.691 / Virus Database: 452 - Release Date: 5/26/2004
--
--
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.691 / Virus Database: 452 - Release Date: 5/26/2004
-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
unsubscribe castor-user