JPA坚持大blob

时间:2012-11-15 12:59:02

标签: java jpa ejb blob

我正在尝试使用大型blob文件保留实体,并且我在JBoss日志中出现“Out of Memory”错误。

我使用多种配置进行测试,但始终得到相同的结果。我正在使用jBoss 6和MySQL。

这个例子......实体:

@Entity
@Table(name="ficheros")
public class Fichero implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(unique=true, nullable=false)
    private int idfichero;

    @Lob()
    @Column(nullable=false)
    private Blob fichero;

    public Fichero() {
    }

    public int getIdfichero() {
        return this.idfichero;
    }

    public void setIdfichero(int idfichero) {
        this.idfichero = idfichero;
    }

    public Blob getFichero() {
        return this.fichero;
    }

    public void setFichero(Blob fichero) {
        this.fichero = fichero;
    }   
}

班级:

public Integer insertaFichero(Fichero fich) {
    ficheroDAO.create(fich);

    return fich.getIdfichero();
}

还有其他办法吗?

1 个答案:

答案 0 :(得分:1)

此错误的问题在于操作系统无法为threadstack分配更多内存,因此无法实例化新线程。可能这不是JBoss的问题。您必须减少每个线程使用的内存量。 JBoss线程的精细大小是128k或256k。

您可以从JBoss文档中查看这些文章

https://community.jboss.org/wiki/OutOfMemoryExceptions?_sscc=t

https://community.jboss.org/wiki/OutOfMemoryExceptionWhenCannotCreateThread

另请参阅stackoverflow问题: Safe thread stack size?

为了减少这个内存量,在linux中我找到了命令:

ulimit -s 256