Hello,
A simple CMP bean on a Oracle table with 1200 records is causing an error : 
javax.ejb.EJBException: Load failed; CausedByException is:
ORA-04031: unable to allocate 232 bytes of shared memory ("shared pool","SELECT 
frm_code, frm_name, f...","sql area","qerixs : rixalo")

System : Oracle 8.1.7 : ojdbc14.jar : JBoss 3.2.3 (also 3.2.5) : jdk 1.4.2_04-b05 : 
local-tx-datasource

I'm using normal getters with default transaction attributes. I'm accessing the CMP 
bean through a session bean. This is the method in the session bean:
        /**
         * @ejb.interface-method
         * @ejb.transaction
         *              type="Required"
         */
        public Collection getProductionFirms() {
                try {
                        Context context = new InitialContext();
                        ProductionFirmLocalHome home = (ProductionFirmLocalHome) 
context.lookup(ProductionFirmLocalHome.COMP_NAME);
                        Collection c = home.findAll();
                        Collection tos = new ArrayList(c.size());
                        for (Iterator i = c.iterator(); i.hasNext();) {
                                ProductionFirmLocal productionFirm = 
(ProductionFirmLocal) i.next();
                                ProductionFirmTO to = new 
ProductionFirmTO(productionFirm.getCode(), productionFirm.getName(),
                                        productionFirm.getIndependent(), new 
DomainItemTO(productionFirm.getCountryCode(), productionFirm.getCountryName()));
                                tos.add(to);
                        }
                        return tos;
                } catch (NamingException e) {
                        throw new EJBException(e);
                } catch (FinderException e) {
                        throw new EJBException(e);
                }
        }


I turned on the trace on org.jboss.tm and org.jboss.ejb.plugins.

JBoss first finds the PK's (1200). Then JBoss writes a SQL statement like "Select ... 
from ... where (PK = ?) OR (PK=?) OR (PK=?) OR (PK=?) etc.
Then is JBoss is setting the parameters 1200 times. But at 1000 it gives the Oracle 
error.
This is the last snippet of the trace :
2004-09-22 23:20:07,119 TRACE 
[org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.ProductionFirm#code] Set 
parameter: index=999, jdbcType=VARCHAR, value=PDB
2004-09-22 23:20:07,119 TRACE 
[org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMP2xFieldBridge.ProductionFirm#code] Set 
parameter: index=1000, jdbcType=VARCHAR, value=PEARC
2004-09-22 23:20:14,181 TRACE [org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy] 
Resized cache for bean ProductionFirm: old capacity = 1000000, new capacity = 50
2004-09-22 23:20:17,010 TRACE [org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy] 
entryRemoved, entry=key: null, object: null, entry: 966905
2004-09-22 23:20:17,010 TRACE [org.jboss.ejb.plugins.EntityInstanceInterceptor] Ending 
invoke, exceptionThrown, [EMAIL PROTECTED]
javax.ejb.EJBException: Load failed; CausedByException is:
        ORA-04031: unable to allocate 232 bytes of shared memory ("shared 
pool","SELECT frm_code, frm_name, f...","sql area","qerixs : rixalo")

        at 
org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityCommand.java:232)
        at 
org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.execute(JDBCLoadEntityCommand.java:72)
        at 
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.loadEntity(JDBCStoreManager.java:612)
        at 
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.loadEntity(JDBCStoreManager.java:594)
        at 
org.jboss.ejb.plugins.CMPPersistenceManager.loadEntity(CMPPersistenceManager.java:381)
        at 
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.loadEntity(CachedConnectionInterceptor.java:352)
        at 
org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invoke(EntitySynchronizationInterceptor.java:239)
        at 
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:185)
        at 
org.jboss.ejb.plugins.EntityReentranceInterceptor.invoke(EntityReentranceInterceptor.java:114)
        at 
org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(EntityInstanceInterceptor.java:163)
        at 
org.jboss.ejb.plugins.EntityLockInterceptor.invoke(EntityLockInterceptor.java:89)
        at 
org.jboss.ejb.plugins.EntityCreationInterceptor.invoke(EntityCreationInterceptor.java:54)
        at 
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:84)
        at 
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:267)
        at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:128)
        at 
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:118)
        at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)
        at 
org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
        at org.jboss.ejb.EntityContainer.internalInvoke(EntityContainer.java:489)
        at org.jboss.ejb.Container.invoke(Container.java:700)
        at 
org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invoke(BaseLocalProxyFactory.java:375)
        at org.jboss.ejb.plugins.local.EntityProxy.invoke(EntityProxy.java:38)
        at $Proxy37.getCode(Unknown Source)
        at 
nl.vda.won.tv.j2ee.ejb.DomainAgentBean.getProductionFirms(DomainAgentBean.java:94)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at 
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:683)
        at 
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:185)
        at 
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:72)
        at 
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:84)
        at 
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:267)
        at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:128)
        at 
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:118)
        at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)
        at 
org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
        at 
org.jboss.ejb.StatelessSessionContainer.internalInvoke(StatelessSessionContainer.java:331)
        at org.jboss.ejb.Container.invoke(Container.java:700)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at 
org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546)
        at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:367)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261)
        at sun.rmi.transport.Transport$1.run(Transport.java:148)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.rmi.transport.Transport.serviceCall(Transport.java:144)
        at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
        at 
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
        at java.lang.Thread.run(Thread.java:534)


The error is reproducable and occurs under the Required transaction attribute of the 
session method. It does not appear when I change the transaction attribute to 
NotSupported (but that should be a bad idee)

Anybody any idee?

T.I.A.
Johan Borchers

View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3849192#3849192

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3849192


-------------------------------------------------------
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM.
Deadline: Sept. 24. Go here: http://sf.net/ppc_contest.php
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to