Como fijar XMLGregorianCalendar

Estoy tratando de fijar un tipo de dato XMLGregorianCalendar mediante la siguiente forma:

GregorianCalendar c = new GregorianCalendar();
c.setTime(getFecha());  //getFecha() consigue un objeto de tipo date con informacion de una base SQL con el formato dd/MM/YYYY

           
                try {
                    XMLGregorianCalendar date=null;
                    date = DatatypeFactory.newInstance().newXMLGregorianCalendar();
                } catch (DatatypeConfigurationException ex) {

                }

Pero lo unico que consigo es lo siguiente:

java.lang.IllegalStateException: com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl#getXMLSchemaType() :Invalid set of fields set for XMLGregorianCalendar

Que es lo que estoy haciendo mal??

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

construcción

Yo he creado esos objetos con el método que recibe un GregorianCalendar. Y por ahi te conviene tener la DatatypeFactory a la mano en vez de crearla cada vez que necesitas pedirle un objeto.

DatatypeFactory dtf = DatatypeFactory.newInstance();
//...
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(algunaInstanciaDeJavaUtilDate);
date = dtf.newXMLGregorianCalendar(cal);

pero nunca he visto ese error que mencionas. Supongo que el método que usas es para crear un XMLGregorianCalendar con la fecha en que se crea. Habría que ver en qué linea se arroja la excepción, porque no creo que sea cuando creas la instancia.

JAXB

Me falto agregar la parte de jaxb:

  try {
            javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext.newInstance(comprobante.getClass().getPackage().getName());
            javax.xml.bind.Marshaller marshaller = jaxbCtx.createMarshaller();
            marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_ENCODING, "UTF-8"); //NOI18N
            marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
            marshaller.marshal(comprobante, System.out);//Aqui es donde truena
        } catch (javax.xml.bind.JAXBException ex) {
            // XXXTODO Handle exception
            java.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex); //NOI18N
        }

Lo raro es que si quito la parte de las fechas se ejecuta correctamente y genera el XML bien.