Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

How to catch SQLException in CMP bean

0 views
Skip to first unread message

Yan Zhou

unread,
Oct 18, 2004, 10:21:02 AM10/18/04
to
Hi there,

I am using CMP beans to set columns, one of which has referential integrity.
Because the abstract set() method does not declare to throw SQLException, I
can not catch SQLException in my session bean (which calls local CMP bean
for creating and setting entity beans), the compiler complains "unreachable
block".

I can only try catching RemoteException in my delegate class. I do not like
that, I even tried to catch all exceptions, i.e., catch Exception, in my
session bean, I still did not catch the SQLException.

The update calls are made into DB probably right before the transaction
completes, however, since it is the container generated classes that does DB
calls and throw SQLException, I could not catch it there since I do not have
the source code for generated classes.

Call stack is attached.

Any suggestion is welcome. Basically I would like to catch SQLException in
session bean.
Thanks.
Yan


<Oct 18, 2004 10:09:06 AM EDT> <Error> <EJB> <BEA-010026> <Exception
occurred during commit of transaction Name=[EJB com.med
lus.serviceHub.rx.ejb.pharmacy.PharmacyMgrSession.updatePharmacy(java.util.A
rrayList,long,java.lang.String)],Xid=BEA1-0153A4
2892EE25246C3(29499284),Status=Rolled back.
[Reason=weblogic.utils.NestedRuntimeException: Error writing from
beforeCompleti
n - with nested exception:
[java.sql.SQLException: ORA-02291: integrity constraint
(DX_OWNER.STATEABBR_RXPHARM_FK) violated - parent key not found
]],numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=0,seconds
left=30,XAServerResourceInfo[weblogic.jdbc.wrappe
.JTSXAResourceImpl]=(ServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceI
mpl]=(state=rolledback,assigned=myserver),xar=we
logic.jdbc.wrapper.JTSXAResourceImpl@1a7491e,re-Registered =
false),SCInfo[hubservices+myserver]=(state=rolledback),properti
s=({weblogic.transaction.name=[EJB
com.medplus.serviceHub.rx.ejb.pharmacy.PharmacyMgrSession.updatePharmacy(jav
a.util.ArrayL
st,long,java.lang.String)], weblogic.jdbc=t3://172.18.15.54:7001}),local
properties=({modifiedListeners=[weblogic.ejb20.inte
nal.TxManager$TxListener@71de6e]}),OwnerTransactionManager=ServerTM[ServerCo
ordinatorDescriptor=(CoordinatorURL=myserver+172
18.15.54:7001+hubservices+t3+,
XAResources={},NonXAResources={})],CoordinatorURL=myserver+172.18.15.54:7001
+hubservices+t3+)
java.sql.SQLException: ORA-02291: integrity constraint
(DX_OWNER.STATEABBR_RXPHARM_FK) violated - parent key not found

at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:305)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:272)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:623)
at
oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:18
1)
at
oracle.jdbc.driver.T4CPreparedStatement.execute_for_rows(T4CPreparedStatemen
t.java:543)
at
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java
:1027)
at
oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedSta
tement.java:2885)
at
oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedState
ment.java:2957)
at
weblogic.jdbc.wrapper.PreparedStatement.executeUpdate(PreparedStatement.java
:115)
at
com.medplus.serviceHub.rx.ejb.pharmacy.Pharmacy_i7s2ww__WebLogic_CMP_RDBMS._
_WL_store(Pharmacy_i7s2ww__WebLogic_C
P_RDBMS.java:3564)
at
com.medplus.serviceHub.rx.ejb.pharmacy.Pharmacy_i7s2ww__WebLogic_CMP_RDBMS.e
jbStore(Pharmacy_i7s2ww__WebLogic_CMP
RDBMS.java:3390)
at
weblogic.ejb20.manager.DBManager.beforeCompletion(DBManager.java:965)
at
weblogic.ejb20.internal.TxManager$TxListener.beforeCompletion(TxManager.java
:653)
at
weblogic.transaction.internal.ServerSCInfo.callBeforeCompletions(ServerSCInf
o.java:1010)
at
weblogic.transaction.internal.ServerSCInfo.startPrePrepareAndChain(ServerSCI
nfo.java:115)
at
weblogic.transaction.internal.ServerTransactionImpl.localPrePrepareAndChain(
ServerTransactionImpl.java:1184)
at
weblogic.transaction.internal.ServerTransactionImpl.globalPrePrepare(ServerT
ransactionImpl.java:1910)
at
weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTra
nsactionImpl.java:273)
at
weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransaction
Impl.java:244)
at
weblogic.ejb20.internal.BaseEJBObject.postInvoke(BaseEJBObject.java:299)
at
weblogic.ejb20.internal.StatelessEJBObject.postInvoke(StatelessEJBObject.jav
a:140)
at
com.medplus.serviceHub.rx.ejb.pharmacy.PharmacyMgr_kb6mwa_EOImpl.updatePharm
acy(PharmacyMgr_kb6mwa_EOImpl.java:16
)
at
com.medplus.serviceHub.rx.ejb.pharmacy.PharmacyMgr_kb6mwa_EOImpl_WLSkel.invo
ke(Unknown Source)
at
weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
at
weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java
:108)
at
weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubjec
t.java:363)
at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:144)
at
weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:415)
at
weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:3
0)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
--------------- nested within: ------------------


0 new messages