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