Bytes do Postgresql para arquivo de imagem: arquivo gerado com problema

Olá,
tenho uma tabela no Postgresql que armazena os bytes (tipo bytea) de imagens enviadas via formulário, usando a API Commons FileUpload. Utilizo o código abaixo para pegar os dados que vêm do submit para gerar uma imagem:

if (((byte[]) item.get()).length > 0) { BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(item.get())); if (bufferedImage != null) { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(((byte[]) item.get()).length); ImageIO.write(bufferedImage, "png", byteArrayOutputStream); byteArrayOutputStream.flush(); byte[] bytes = byteArrayOutputStream.toByteArray(); byteArrayOutputStream.close(); FileOutputStream fileOutputStream = new FileOutputStream(new File("'caminho'/imagem.png")); fileOutputStream.write(bytes); fileOutputStream.close(); } }Quando vem do formulário a imagem é gerada normalmente. Porém quando uso o código para gerar a imagem vinda do banco, é gerado um arquivo ‘imagem.png’, porém ele vem corrompido, não podendo ser aberto. E o BufferedImage do código abaixo se torna nulo:

BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(bytes)); //bytes vindos do banco geram um BufferedImage nulo, neste caso.É preciso alguma configuração extra para gerá-lo corretamente?

Notei uma coisa: o problema ocorre quando o servidor web é reiniciado; enquanto ele está ativo (Tomcat ou Glassfish) as fotos que foram enviadas podem ser trabalhadas normalmente.