bigdata-mx / factura-electronica

Librería de componentes Java para el desarrollo de aplicaciones de Factura Electrónica (CFDI)
Apache License 2.0
94 stars 107 forks source link

Error en weblogic 12c #45

Closed elmer-garduno closed 12 years ago

elmer-garduno commented 12 years ago

Original author: e.semp...@gmail.com (January 12, 2012 06:20:23)

Hola

Agregue la libreria a un proyecto web y me funciona bien cuando hago el deploy en glassfish 3.1 pero cuando hago el deploy en Weblogic 12c me marca el sigiente error cuando intento crear un comprobante:

javax.xml.bind.UnmarshalException

Esto lo probe con la version 2.0 en estos momentos estoy probando con la version 2.1

tambien aprovecho para comentarte que he estado intentando bajar la libreria del svn y no esta completa.

gracias

¿Cuál es el resultado esperado? ¿Qué resulta en su lugar?

¿Cuál versión del producto está utilizando?

Agregue cualquier información adicional que resulte de utilidad.

Original issue: http://code.google.com/p/factura-electronica/issues/detail?id=45

elmer-garduno commented 12 years ago

From bigdata.mx on January 13, 2012 05:10:06 Hola podrías anexar la parte relevante del código que te causa problemas.

Respecto al código fuente una buena parte de las clases se genera en línea al compilar, que ambiente de desarrollo utilizas?

Saludos

elmer-garduno commented 12 years ago

From e.semp...@gmail.com on January 13, 2012 05:56:24 Hola

En mi desarrollo en el codigo que me genera el error es cuando intento crear un comprobante te pego el codigo en seguida. public List validaCFD(File file, String rfc) throws CFDExcepcion { List respuesta = new ArrayList();

    InputStream bais = null;

    loggerSLF4J.info("version  validaCFD");
    try {
        bais = new FileInputStream(file);

//Esta es la linea donde me genera el error mx.bigdata.sat.cfd.schema.Comprobante comp = CFDv2.newComprobante(bais);

        loggerSLF4J.info("version  " + comp.getVersion());
        //loggerSLF4J.info("certificado  "+comp.getCertificado());
        loggerSLF4J.info("numero certificado  " + comp.getNoCertificado());

        respuesta = this.validaCFDv2(comp, rfc);
        loggerSLF4J.info("validado por validaCFD  " + respuesta);

    } catch (Exception e) {
        loggerSLF4J.info("es posible que no sea version 2  "+  e.toString());
        loggerSLF4J.debug("************** es posible que no sea version 2  ", e);
    }

    try {
        bais = new FileInputStream(file);

//Esta es la linea donde me genera el error
mx.bigdata.sat.cfdi.schema.Comprobante comp = CFDv3.newComprobante(bais);

        loggerSLF4J.info("version  " + comp.getVersion());
        //loggerSLF4J.info("certificado  "+comp.getCertificado());
        loggerSLF4J.info("numero certificado  " + comp.getNoCertificado());
        respuesta = this.validaCFDv3(comp, rfc);

    } catch (Exception e) {
        loggerSLF4J.info("no es de  version 3"  + e.toString());
        loggerSLF4J.debug("***************** no es de  version 3  ", e);
        //e.printStackTrace();
    } finally {
        try {
            bais.close();
        } catch (Exception e) {
            loggerSLF4J.warn("no se cerró correctamente el archivo ", e);
        }
    }
    return respuesta;
}

y segun yo este error biene de este codigo que se encuentra en la libreria

private static Comprobante load(InputStream source, String... contexts) throws Exception { JAXBContext context = getContext(contexts); try { Unmarshaller u = context.createUnmarshaller(); return (Comprobante) u.unmarshal(source); } finally { source.close(); } }

Como te comento este codigo funciona perfectamente cuando hago el deploy en glassfish 3.1 pero cuando lo hago en Weblogic 12c es cuando marca el error

Estoy desarrollando en Netbeans 7.1 y (Weblogic 12c y Glassfish 3.1)

La vdd ya tengo vario dias intentanto resolverlo yo se que no es un error propio de la libreria yo voy mas a que es un error de compatibilidad con weblogic pero agradeeria mucho tu ayuda.

saludos

elmer-garduno commented 12 years ago

From bigdata.mx on January 14, 2012 18:19:07 Es posible que el path de donde esté tratando de leer el file sea distinto en en un deployment que en el otro y que por eso no funcione?

Puedes imprimir dos cosas 'file' para verificar el path y

import com.google.common.io.ByteStreams; ...

ByteArrayOutputStream baos = new ByteArrayOutputStream(); ByteStreams.copy(new FileInputStream(file), baos); System.out.println(new String(baos.toByteArray(), "utf8"));

Con eso puedes validar que el contenido de los files en ambos deployments sean iguales, si no, podemos seguir investigando.

Saludos