Thank you Alex!

> Hello Michael,
>
> it's a bug. I'll fix it today ASAP.
>
> alex
>
>
> Monday, March 24, 2003, 1:43:06 AM, you wrote:
>
> MN> Hello!
>
> MN> I'm getting a StackOverflowException while population a CMR Entity
Bean. What's special about the relation is that it uses primary key fields
as part of the relation (no foreign key db constraint
> MN> attached). The problem described below occured in a number of
different cases. For illustration I'm using the most simple one.
>
> MN> The situation is as follows:
> MN> I have 2 Entity Beans: Finance and Company.
>
> MN> Company has a Primary Key called id.
> MN> Finance has the same Primary Key called companyId.
>
> MN> Finance.companyId is a relationship field that references Company.id
and vice versa.
>
> MN> Now when I create a new Company Bean everything is fine. The problem
occurs when trying to insert a Finance bean which references the Company
just inserted.
>
> MN> The stack trace looks like that:
>
> MN> 2003-03-24 00:29:16,747 ERROR [org.jboss.ejb.plugins.LogInterceptor]
TransactionRolledbackLocalException, causedBy:
> MN> javax.ejb.EJBException: Unexpected Error
> MN> java.lang.StackOverflowError
> MN>  at sun.reflect.Reflection.quickCheckMemberAccess(Reflection.java:43)
> MN>  at java.lang.reflect.Field.doSecurityCheck(Field.java:804)
> MN>  at java.lang.reflect.Field.getFieldAccessor(Field.java:758)
> MN>  at java.lang.reflect.Field.get(Field.java:228)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCAbstractCMPFieldBridge.getPrimaryK
eyValue(JDBCAbstractCMPFieldBridge.java:200)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge.injectPrimaryKeyIntoI
nstance(JDBCEntityBridge.java:695)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityC
ommand.java:113)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityC
ommand.java:83)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.loadEntity(JDBCStoreManager.
java:638)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.updateFKFieldsMap
pedToMe(JDBCCMP2xFieldBridge.java:287)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.setInstanceValue(
JDBCCMP2xFieldBridge.java:162)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.setInstanceValue(
JDBCCMP2xFieldBridge.java:184)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge.injectPrimaryKeyIntoI
nstance(JDBCEntityBridge.java:696)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityC
ommand.java:113)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityC
ommand.java:83)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.loadEntity(JDBCStoreManager.
java:638)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.updateFKFieldsMap
pedToMe(JDBCCMP2xFieldBridge.java:287)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.setInstanceValue(
JDBCCMP2xFieldBridge.java:162)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.setInstanceValue(
JDBCCMP2xFieldBridge.java:184)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge.injectPrimaryKeyIntoI
nstance(JDBCEntityBridge.java:696)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityC
ommand.java:113)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityC
ommand.java:83)
>
> MN> [abbreviated (looks the same)]
>
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.loadEntity(JDBCStoreManager.
java:638)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.updateFKFieldsMap
pedToMe(JDBCCMP2xFieldBridge.java:287)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.setInstanceValue(
JDBCCMP2xFieldBridge.java:162)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.setInstanceValue(
JDBCCMP2xFieldBridge.java:184)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge.injectPrimaryKeyIntoI
nstance(JDBCEntityBridge.java:696)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityC
ommand.java:113)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityC
ommand.java:83)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.loadEntity(JDBCStoreManager.
java:638)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.updateFKFieldsMap
pedToMe(JDBCCMP2xFieldBridge.java:287)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.setInstanceValue(
JDBCCMP2xFieldBridge.java:162)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.setInstanceValue(
JDBCCMP2xFieldBridge.java:184)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge.injectPrimaryKeyIntoI
nstance(JDBCEntityBridge.java:696)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityC
ommand.java:113)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityC
ommand.java:83)
> MN>  at
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.loadEntity(JDBCStoreManager.
java:638)
>
> MN>  at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor
.java:182)
> MN>  at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.
java:243)
> MN>  at
org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java:74)
> MN>  at
org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityInterceptor.jav
a:92)
> MN>  at
org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:123)
> MN>  at
org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invokeHome(ProxyFactoryF
inderInterceptor.java:93)
> MN>  at
org.jboss.ejb.EntityContainer.internalInvokeHome(EntityContainer.java:477)
> MN>  at org.jboss.ejb.Container.invoke(Container.java:698)
> MN>  at
org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invokeHome(BaseLocalProxyF
actory.java:272)
> MN>  at
org.jboss.ejb.plugins.local.LocalHomeProxy.invoke(LocalHomeProxy.java:110)
> MN>  at $Proxy166.create(Unknown Source)
> MN>  at
de.unimannheim.joker.ejb.session.xmlinterface.XMLInterfaceBean.createCompany
(XMLInterfaceBean.java:173)
> MN>  at
de.unimannheim.joker.ejb.session.xmlinterface.XMLInterfaceBean.setXML(XMLInt
erfaceBean.java:75)
> MN>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> MN>  at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39
)
> MN>  at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
> MN>  at java.lang.reflect.Method.invoke(Method.java:324)
> MN>  at
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(Stateles
sSessionContainer.java:629)
> MN>  at
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(Cach
edConnectionInterceptor.java:186)
> MN>  at
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSe
ssionInstanceInterceptor.java:72)
> MN>  at
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor
.java:84)
> MN>  at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.
java:243)
> MN>  at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:104)
> MN>  at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:11
7)
> MN>  at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:198)
> MN>  at
org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinde
rInterceptor.java:122)
> MN>  at
org.jboss.ejb.StatelessSessionContainer.internalInvoke(StatelessSessionConta
iner.java:322)
> MN>  at org.jboss.ejb.Container.invoke(Container.java:678)
> MN>  at
org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invoke(BaseLocalProxyFacto
ry.java:353)
> MN>  at
org.jboss.ejb.plugins.local.StatelessSessionProxy.invoke(StatelessSessionPro
xy.java:83)
> MN>  at $Proxy186.setXML(Unknown Source)
> MN>  at
de.unimannheim.joker.web.servlet.XMLImportServlet.service(XMLImportServlet.j
ava:20)
> MN>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> MN>  at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:360)
> MN>  at org.mortbay.jetty.servlet.Invoker.service(Invoker.java:184)
> MN>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> MN>  at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:360)
> MN>  at
org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandl
er.java:278)
> MN>  at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:558)
> MN>  at org.mortbay.http.HttpContext.handle(HttpContext.java:1714)
> MN>  at
org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext
.java:548)
> MN>  at org.mortbay.http.HttpContext.handle(HttpContext.java:1664)
> MN>  at org.mortbay.http.HttpServer.service(HttpServer.java:863)
> MN>  at org.jboss.jetty.Jetty.service(Jetty.java:460)
> MN>  at org.mortbay.http.HttpConnection.service(HttpConnection.java:775)
> MN>  at
org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:939)
> MN>  at org.mortbay.http.HttpConnection.handle(HttpConnection.java:792)
> MN>  at
org.mortbay.http.SocketListener.handleConnection(SocketListener.java:201)
> MN>  at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:289)
> MN>  at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:455)
>
> MN> I'm using JBoss 3.2 RC 4.
>
> MN> The problem occurs between ejbCreate and ejbPostCreate. It seems to be
an infinite loop.
>
> MN> In this simple case there are of course workarounds to this problem.
One could for example generate a new unique pk for finance and let Company
refer to this one. Finance would then still refer
> MN> to companyId. As my application manages multiple companies, it should
be a more general concept to use hierarchical pks for products, raw
materials... which all have a company identifier.
>
> MN> Maybe someone can give me a hint.
>
> MN> Thanks, Michael
> MN> _______________________________
> MN> Michael Nowotny
>
> MN> L8, 10
> MN> 68 161 Mannheim
> MN> Germany
>
> MN> Tel:  +49-(0) 621 1569139
> MN> Mobile: +49-(0) 170 1634186
>
> MN> E-Mail: [EMAIL PROTECTED]
>
>
>
> -------------------------------------------------------
> This SF.net email is sponsored by:Crypto Challenge is now open!
> Get cracking and register here for some mind boggling fun and
> the chance of winning an Apple iPod:
> http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0031en
> _______________________________________________
> JBoss-user mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/jboss-user
>



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to