7MB field limitation
clovis Dec 19, 2003 10:14 AMHello,
I'm currently having problems with a cmp bean used to store files. it only have an id field and a java.lang.object field (mapped to ms-sql image type).
Everything goes ok when the file is small, but when using files near 5mb I get an Out of memory expection from jboss.
I'm currently using min 256mb/max 512mb on vm options.
Is this a limitation or bug ?
A simple servlet calling only home.create(text); without any transaction causes the problem.
Anyone have an idea of what's going on ?
Here is a code sample:
package teste;
import javax.naming.NamingException;
import cds.cadastro.SequenceSessionLocal;
import cds.cadastro.SequenceSessionUtil;
/**
* Bean implementation class for Enterprise Bean: TesteText.
*
* @author Clóvis Yutaka Harada.
*
* @ejb.bean
* type="CMP"
* cmp-version="2.x"
* name="TesteText"
* jndi-name="teste.TesteText"
* local-jndi-name="teste.TesteTextLocal"
* view-type="both"
* primkey-field="idTesteText"
*
* @ejb.finder
* signature="java.util.Collection findAll()"
* query="SELECT OBJECT(o) FROM TesteText o"
*
* @ejb.persistence table-name="TesteText"
*
* @ejb.ejb-ref
* ejb-name="SequenceSession"
* ref-name="ejb/SequenceSessionLocal"
* view-type="local"
*
* @jboss.persistence datasource="java:/cdsDS"
* datasource-mapping="MS SQLSERVER2000"
* create-table="true"
* remove-table="false"
* table-name="TesteText"
*/
public abstract class TesteTextBean implements javax.ejb.EntityBean {
private javax.ejb.EntityContext myEntityCtx;
/**
* setEntityContext
*/
public void setEntityContext(javax.ejb.EntityContext ctx) {
myEntityCtx = ctx;
}
/**
* getEntityContext
*/
public javax.ejb.EntityContext getEntityContext() {
return myEntityCtx;
}
/**
* unsetEntityContext
*/
public void unsetEntityContext() {
myEntityCtx = null;
}
/**
* @ejb.create-method
* view-type="both"
*/
public java.lang.Integer ejbCreate(
java.lang.String texto
) throws javax.ejb.CreateException {
try {
SequenceSessionLocal sequenceGen = SequenceSessionUtil.getLocalHome().create();
setIdTesteText(new java.lang.Integer(
sequenceGen.getNextSequenceNumber("cds.teste.TesteText.idTesteText" ))
);
} catch (NamingException ne) {
ne.printStackTrace();
throw new javax.ejb.CreateException("Erro ao tentar acessar gerador de sequenciais.");
}
setTexto(texto);
return null;
}
/**
* ejbPostCreate
*/
public void ejbPostCreate(
java.lang.String texto
) throws javax.ejb.CreateException {
}
/**
* ejbActivate
*/
public void ejbActivate() {
}
/**
* ejbLoad
*/
public void ejbLoad() {
}
/**
* ejbPassivate
*/
public void ejbPassivate() {
}
/**
* ejbRemove
*/
public void ejbRemove() throws javax.ejb.RemoveException {
}
/**
* ejbStore
*/
public void ejbStore() {
}
/**
* Get accessor for persistent attribute: idTesteText.
* @ejb.pk-field
* @ejb.interface-method
* view-type="both"
* @ejb.persistence
* column-name="idTesteText"
* sql-type="int"
* jdbc-type="INTEGER"
*/
public abstract java.lang.Integer getIdTesteText();
/**
* Set accessor for persistent attribute: idTesteText.
*/
public abstract void setIdTesteText(java.lang.Integer newIdTesteText);
/**
* Get accessor for persistent attribute: texto
* @ejb.interface-method
* view-type="both"
* @ejb.persistence
* column-name="texto"
* jdbc-type="LONGVARCHAR"
* sql-type="text"
*/
public abstract java.lang.String getTexto();
/**
* Set accessor for persistent attribute: texto
*/
public abstract void setTexto(java.lang.String newTexto);
}