Problema com InputStream

Olá a todos.

Estou com um pequeno problema para inserir um xml no DB2. Eis o que estou fazendo:

[code] public void mtInserirRelatorioAdequacaoBD(Connection c, RelatorioAdequacao relatorio) throws Exception {
PreparedStatement ps = null;
StringBuffer cmd = new StringBuffer();

    cmd.append("insert into acad.vaccq4  (cforma, anoofer, ccoord, cscoord, trel, dtrel, xmlrel) ");
    //            1  2  3  4  5                     6 
    cmd.append(" values (?, ?, ?, ?, ?, current_timestamp, ?)");
    try {
        ps = c.prepareStatement(cmd.toString());
        ps.setInt(1,relatorio.getFormaOferecimento().getIdentificacaoFormaOferecimento());
        ps.setInt(2,relatorio.getAnoOferecimento());            
        ps.setInt(3,relatorio.getCodigoCoordenadoria());
        ps.setInt(4,relatorio.getCodigoSubCoordenadoria());
        ps.setInt(5,relatorio.getTipoRelatorio());
        BufferedReader reader = new BufferedReader(new InputStreamReader(relatorio.getXml())); // getXml() retorna o inputStream
        ps.setCharacterStream(6, reader, relatorio.getXml().available());
        ps.executeUpdate();
    } finally {
        if (ps != null)
            ps.close();
        ps = null;
    }
}[/code]

O campo XMLREL é do tipo CLOB, e seu tamanho é de 916194 bytes. O que acontece é que, eventualmente temos um sql code -302, ou seja, dizendo que o arquivo que estamos tentando inserir é maior que o tamanho suportado para a coluna. Gostaria de saber se , antes de inserir este InputStream é possivel eu obter o tamanho dele. Eu não tenho o codigo que gera ele, mas sei que o java gera uma Stringzona grande e converte para InputStream para ser inserida no banco por CLOB. Preciso saber como ter o tamanho deste XML para validar a inserção, e apontar quais casos exatamente que estão com tamanho maior, temos mais de 2M registros (aplicação para a universidade Unicamp) portanto dificilmente vou poder ficar testando para saber qual exatamente que está ultrapassando o limite.

Obrigado a quem puder ajudar. []´s

Faz um negócio decente e testa esse xml antes enviar para o método de inserção no banco…

Como testar o xml ?

O xml é gerado pelo proprio java, antes de chamar o método de conexão, e está gerando certinho. Nao entendi onde vc quis chegar, mas vlw a resposta. []´s

Não há como determinar o tamanho de um InputStream sem ler ele por inteiro antes.

Neste cenário então você teria 03 possibilidades.

1 - Ler diretamente o tamanho do arquivo com a classe File (Se for o caso).

2 - Transformar o InputStream em ByteArrayOutputStream, chamar o metodo toByteArray() e ver seu tamanho.

3 - Ler Byte a Byte e somar.