2010-11-02 3 views
0

J'utilise JAX-WS (WAS 7) -> Websphere ESB 7 -> JAX-WS (WAS 7), en remplissant xsd: dateTime champ avec un horodatage.xsd dateTime perdre les informations de fuseau horaire transmises via Websphere ESB via JAX-WS

Voici le flux:

  1. WAS - Instanciez objet Response
  2. Populate champ XMLGregorianCalendar dans POJO [DatatypeFactory.newInstance().newXMLGregorianCalendar((GregorianCalendar)Calendar.getInstance())] "2010-11-02T15:35:42.047+13:00"
  3. réponse retraverser ESB
  4. Examine réponse à la passerelle "2010-11-02T02:35:42.047Z"

Comme vous pouvez le voir les informations sur le fuseau horaire NZ sont ignorées. Le XMLGregorianCalendarImpl.timezone=0 retourné, où il était XMLGregorianCalendarImpl.timezone=780 lorsqu'il a été instancié.

Le POJO est généré avec le "JAX-WS RI IBM 2.1.1 JDK 6" comme

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "MessageControl", namespace = "http://xmlschema.customer.co.nz/generic/Response123", propOrder = { 
    "messageTrackTrace", 
    "messageDate", 
}) 
public class PojoClass { 

    @XmlElement(name = "MessageTrackTrace") 
    protected String messageTrackTrace; 
    @XmlElement(name = "MessageDate", required = true) 
    protected XMLGregorianCalendar messageDate; 

Est-ce un bogue dans ESB? Peut-être qu'il y a une configuration que je peux changer? Cheers

+0

ne l'ignore pas, il est en train de convertir en UTC. – puug

Répondre

0

Merci pour la pensée Ryan, Je l'ai résolu en remplissant un nouveau XMLGregorianCalendar à partir d'une date.

DatatypeFactory df = DatatypeFactory.newInstance(); 
GregorianCalendar cal = (GregorianCalendar) Calendar.getInstance(); 

Date messageDate = pojoClass.getMessageDate().toGregorianCalendar().getTime(); 
cal.setTime(messageDate); 
XMLGregorianCalendar xCal = df.newXMLGregorianCalendar(cal); 
pojoClass.setMessageDate(xCal); 

Ceci maintient le format que je veux, c'est-à-dire le fuseau horaire 'Pacific/Auckland'.

Salutations

Questions connexes