Silvio,
O problema bastante simples, o que est acontecendo no tem nada a ver
com o seu bean, e sim com o Oracle. O que acontece que todo banco Oracle
configurado para aceitar um nmero mximo de conexes simltneas (no seu
caso 150 conexes), ou seja, a partir deste nmero mximo todas as conexes
so rejeitadas.
Para verificar isso acompanhe a execuo do seu loop monitorando o Oracle
pelo Sql Plus (fazendo um "select count(*) from v$session") e voc ver que
seu bean dar pau quando o select chegar a 150.
O remdio usar um pool de conexes. Voc at pode aumentar o valor do
parmetro que controla o nmero de conexes, mas poder implicar em
problemas de licensiamento e performance do banco.
Um abrao,
Anderson M. C. de Souza
-Mensagem original-
De: Silvio Hohne [mailto:[EMAIL PROTECTED]]
Enviada em: tera-feira, 3 de abril de 2001 19:43
Para: [EMAIL PROTECTED]
Assunto: [java-list] jboss
Pessoal,
Comecei a estudar EJB utilizando o JBoss.
Fora aquela surra inicial que j era esperada estou encontrando um
probleminha.
Tenho um Entity Bean do tipo BMP que se chama Account (aquele do exemplo da
Sun com algumas modificaes). A persistncia feita num banco Oracle.
O cdigo do cliente algo assim:
AccountHome home = (AccountHome)PortableRemoteObject.narrow(objref,
AccountHome.class);
for (int i=0; iQUANTIDADE_OBJETOS; i++) {
Account account = home.create("" + i, "Nome" + i,
"Sobrenome" + i, i * 10.00);
account.credit(100.07);
}
A finalidade deste cdigo criar varios beans Account no servidor.
Bem, quando coloco um nmero "baixo" para QUANTIDADE_OBJETOS ( 10) tudo
funciona perfeitamente.
Quanto QUANTIDADE_OBJETOS maior ( = 50) o servidor JBoss reporta o
seguinte erro.
[Account] java.sql.SQLException: ORA-00020: maximum number of processes
(150) exceeded
[Account]
[Account] at
oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
[Account] at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
[Account] at oracle.jdbc.ttc7.O3log.receive1st(O3log.java:428)
[Account] at
oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:248)
[Account] at
oracle.jdbc.driver.OracleConnection.init(OracleConnection.java:246)
[Account] at
oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:365)
[Account] at
oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:260)
[Account] at
java.sql.DriverManager.getConnection(DriverManager.java:517)
[Account] at
java.sql.DriverManager.getConnection(DriverManager.java:177)
[Account] at
oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:111)
[Account] at
oracle.jdbc.pool.OracleConnectionPoolDataSource.getPhysicalConnection(Oracle
ConnectionPoolDataSource.
java:107)
[Account] at
oracle.jdbc.xa.client.OracleXADataSource.getXAConnection(OracleXADataSource.
java:88)
[Account] at
org.jboss.minerva.factories.XAConnectionFactory.createObject(XAConnectionFac
tory.java:232)
[Account] at
org.jboss.minerva.pools.ObjectPool.createNewObject(ObjectPool.java:801)
[Account] at
org.jboss.minerva.pools.ObjectPool.getObject(ObjectPool.java:549)
[Account] at
org.jboss.minerva.datasource.XAPoolDataSource.getConnection(XAPoolDataSource
.java:169)
[Account] at
com.kepler.account.AccountEJB.getConnection(AccountEJB.java:231)
[Account] at
com.kepler.account.AccountEJB.storeRow(AccountEJB.java:405)
[Account] at
com.kepler.account.AccountEJB.ejbStore(AccountEJB.java:206)
[Account] at java.lang.reflect.Method.invoke(Native Method)
[Account] at
org.jboss.ejb.plugins.BMPPersistenceManager.storeEntity(BMPPersistenceManage
r.java:305)
[Account] at
org.jboss.ejb.plugins.EntitySynchronizationInterceptor$InstanceSynchronizati
on.beforeCompletion(Entit
ySynchronizationInterceptor.java:343)
[Account] at
org.jboss.tm.TxCapsule.doBeforeCompletion(TxCapsule.java:1104)
[Account] at org.jboss.tm.TxCapsule.commit(TxCapsule.java:278)
[Account] at
org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:76)
[Account] at
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.
java:318)
[Account] at
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:99)
[Account] at
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:14
4)
[Account] at
org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:192)
[Account] at
org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:323)
[Account] at
org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerI
nvoker.java:163)
[Account] at java.lang.reflect.Method.invoke(Native Method)
[Account] at
sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:241)
[Account] at sun.rmi.transport.Transport$1.run(Transport.java:142)
[Account] at