André Markwalder wrote:
Hi Armin,
Thanks for the detailled explanation so far.
Until now we use OJB out of the box. The only spots where we use our own
implementations are the persistence broker as described in earlier mail
and we extended the sqlgenerator with our own implementation (We
implemented some additional oracle optimizer hints, but right now we're
getting back to the standard OJB implementation).
I think these user extensions will not cause the issues.
We didn't make any
changes to the proxy implementations.
I ask because some user reported about problems caused by the proxy
implementation. E.g.
http://www.mail-archive.com/ojb-user%40db.apache.org/msg14287.html
A the patch with additional improvements will be checked in today or
tomorrow.
Perhaps the stacktrace of the two errors we get (from customer log)
tells you something (listed after the mail).
Something I forget to mention is that we use (at some spots in the
application) the db connection from OJB to create our own prepared
statements. Afterwards we close these statement and the resulting
resultset. We leave the connection untouched (We don't close the
connection). Did you experienced problems if we do this?
If you lookup the connection in the same way as described in docs
http://db.apache.org/ojb/docu/guides/connection.html#Can+I+directly+obtain+a%0A++++++++++++++++
(without OJB's tx demarcation - only broker lookup, connection lookup,
connection use, stmt/RS close, broker close) ...the answer is no.
If both error below are not reproduceable and only occur under heavy
user load, I assume that you have a concurrency problem. Could you
describe how you are handling the PB instances - do you lookup a new PB
instance in each stateless session bean method or do you share PB
instances within some beans?
BTW. OJB Team did a very good job implementing a persistence layer. Our
product we're implenting right now uses OJB and OJB helps us a lot to
simplify things concerning the data access. Without OJB I think we will
still be in development phase of the product ;-). Good job.
Thanks much! You make my day ;-)
regards,
Armin
Thanks and best regards
André
Error 1:
[9/26/05 8:23:50:748 CEST] 7412d0 ExceptionUtil E CNTR0020E:
Non-application exception occurred while processing method
"getListOfBusinessObjects" on bean
"BeanId(SWMApplication#aes_tapir_ejb.jar#TAPIR/Employee, null)".
Exception data: java.lang.NullPointerException
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getClassDescriptor(Unknown
Source)
at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getClassDescriptor(Unknown
Source)
at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getClassDescriptor(Unknown
Source)
at
com.alabus.aes.server.ejb.util.AesQuery.getQueryByCriteria(AesQuery.java:793)
at
com.alabus.aes.server.ejb.util.AbstractAesReader.getDataMapFromDatabase(AbstractAesReader.java:119)
at
com.alabus.aes.server.ejb.util.AesXmlReader.generateXML(AesXmlReader.java:61)
at
com.alabus.aes.server.ejb.util.AesXmlReader.generateXML(AesXmlReader.java:56)
at
com.alabus.aes.server.ejb.util.AbstractAesBaseBusinessObject.getListOfBusinessObjects(AbstractAesBaseBusinessObject.java:403)
at
com.alabus.aes.server.ejb.util.AbstractAesBaseBusinessObject.getListOfBusinessObjects(AbstractAesBaseBusinessObject.java:352)
at
com.alabus.aes.server.ejb.application.tapir.EmployeeBean.getListOfBusinessObjects(EmployeeBean.java:405)
at
com.alabus.aes.server.ejb.application.tapir.EJSRemoteStatelessTAPIR_Employee_d0d65d1e.getListOfBusinessObjects(EJSRemoteStatelessTAPIR_Employee_d0d65d1e.java:165)
at
com.alabus.aes.server.ejb.application.tapir._EJSRemoteStatelessTAPIR_Employee_d0d65d1e_Tie.getListOfBusinessObjects(_EJSRemoteStatelessTAPIR_Employee_d0d65d1e_Tie.java:318)
at
com.alabus.aes.server.ejb.application.tapir._EJSRemoteStatelessTAPIR_Employee_d0d65d1e_Tie._invoke(_EJSRemoteStatelessTAPIR_Employee_d0d65d1e_Tie.java:135)
at
com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler(ServerDelegate.java:615)
at com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:468)
at com.ibm.rmi.iiop.ORB.process(ORB.java:396)
at com.ibm.CORBA.iiop.ORB.process(ORB.java:1608)
at com.ibm.rmi.iiop.Connection.doWork(Connection.java:2164)
at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:63)
at com.ibm.ejs.oa.pool.PooledThread.run(ThreadPool.java:95)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:672)
Error 2:
com.ibm.websphere.ce.cm.ObjectClosedException: DSRA9110E: Statement is
closed.
at
com.ibm.ws.rsadapter.jdbc.WSJdbcStatement.runtimeXIfNotClosed(WSJdbcStatement.java:944)
at
com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.executeQuery(WSJdbcPreparedStatement.java:435)
at
org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeQuery(Unknown
Source)
at
org.apache.ojb.broker.accesslayer.RsQueryObject.performQuery(Unknown
Source)
at org.apache.ojb.broker.accesslayer.RsIterator.<init>(Unknown Source)
at
org.apache.ojb.broker.core.RsIteratorFactoryImpl.createRsIterator(Unknown
Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getRsIteratorFromQuery(Unknown
Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getIteratorFromQuery(Unknown
Source)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getObjectByQuery(Unknown
Source)
at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(Unknown
Source)
at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(Unknown
Source)
at
com.alabus.aes.server.ejb.util.AbstractAesReader.<init>(AbstractAesReader.java:105)
at
com.alabus.aes.server.ejb.util.AesXmlReader.<init>(AesXmlReader.java:50)
at
com.alabus.aes.server.ejb.util.AbstractAesBaseBusinessObject.getListOfBusinessObjects(AbstractAesBaseBusinessObject.java:402)
at
com.alabus.aes.server.ejb.util.AbstractAesBaseBusinessObject.getListOfBusinessObjects(AbstractAesBaseBusinessObject.java:364)
at
com.alabus.aes.server.ejb.application.system.AesLovBean.getListOfBusinessObjects(AesLovBean.java:225)
at
com.alabus.aes.server.ejb.application.system.EJSLocalStatelessTAPIR_AesLov_ef909e9c.getListOfBusinessObjects(EJSLocalStatelessTAPIR_AesLov_ef909e9c.java:199)
at java.lang.reflect.Method.invoke(Native Method)
at
com.alabus.aes.server.ejb.util.AbstractAesBaseBusinessObject.getLovs(AbstractAesBaseBusinessObject.java:722)
at
com.alabus.aes.server.ejb.application.tapir.BusTaskBean.getLovs(BusTaskBean.java:656)
at
com.alabus.aes.server.ejb.application.tapir.EJSRemoteStatelessTAPIR_BusTask_b3b11d52.getLovs(EJSRemoteStatelessTAPIR_BusTask_b3b11d52.java:165)
at
com.alabus.aes.server.ejb.application.tapir._EJSRemoteStatelessTAPIR_BusTask_b3b11d52_Tie.getLovs(_EJSRemoteStatelessTAPIR_BusTask_b3b11d52_Tie.java:345)
at
com.alabus.aes.server.ejb.application.tapir._EJSRemoteStatelessTAPIR_BusTask_b3b11d52_Tie._invoke(_EJSRemoteStatelessTAPIR_BusTask_b3b11d52_Tie.java:84)
at
com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler(ServerDelegate.java:615)
at com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:468)
at com.ibm.rmi.iiop.ORB.process(ORB.java:396)
at com.ibm.CORBA.iiop.ORB.process(ORB.java:1608)
at com.ibm.rmi.iiop.Connection.doWork(Connection.java:2164)
at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:63)
at com.ibm.ejs.oa.pool.PooledThread.run(ThreadPool.java:95)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:672)
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]