Converter XMLGregorianCalendar para Date - WSDL

4 respostas
Thiago_Siqueira

Prezados, estou tentar converter o XMLGregorianCalendar para Date ou Calendar no momento em que o Java gerar as classes através de ‘jaxb:globalBindings’, porém nenhuma alteração que faço é efetiva.

Meu arquivo WSDL:
arquivo.wsdl (10,2 KB)

Classe Converter:

public class XsdDateTimeConverter {

public static Date unmarshal(String dateTime) {
    return DatatypeConverter.parseDate(dateTime).getTime();
}

public static String marshalDate(Date date) {
    final GregorianCalendar calendar = new GregorianCalendar();
    calendar.setTime(date);
    return DatatypeConverter.printDate(calendar);
}

public static String marshalDateTime(Date dateTime) {
    final GregorianCalendar calendar = new GregorianCalendar();
    calendar.setTime(dateTime);
    return DatatypeConverter.printDateTime(calendar);
}

}

O que estou fazendo de errado?

4 Respostas

pmlm

Retira o globalBindings do wsdl e coloca num ficheiro de bindings (xjb).

Thiago_Siqueira

Li isso em vários lugares, mas, perdoe a minha ignorância nessa parte já que não é a minha área, não consegui descobrir qual local colocar esse bendito arquivo.

pmlm

No mesmo sítio do wsdl…
http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.5/tutorial/doc/JAXBUsing4.html

Thiago_Siqueira

Removi o globalBindings do wsdl e criei o arquivo .xjb na mesma pasta do WSDL (Projeto\src\conf\xml-resources\web-service-references\arquivo\wsdl).

O conteúdo o arquivo citado é:

<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb" version="2.0"
 xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <javaType name="java.util.Date" xmlType="xs:dateTime"
                      parseMethod="br.com.gs.integrador.util.XsdDateTimeConverter.unmarshal"
                      printMethod="br.com.gs.integrador.util.XsdDateTimeConverter.marshalDateTime" />
            <javaType name="java.util.Date" xmlType="xs:date"
                      parseMethod="br.com.gs.integrador.util.XsdDateTimeConverter.unmarshal"
                      printMethod="br.com.gs.integrador.util.XsdDateTimeConverter.marshalDate" />		  
  </globalBindings>

Através do Netbeans, clico em Atualizar (no arquivo WSDL), as classes são geradas, porém os atributos continuam sendo XMLGregorianCalendar.

Criado 18 de dezembro de 2015
Ultima resposta 18 de dez. de 2015
Respostas 4
Participantes 2