如何使用 JAXWS 和 APT 自定义日期/时间绑定? [英] How do I customise date/time bindings using JAXWS and APT?

查看:26
本文介绍了如何使用 JAXWS 和 APT 自定义日期/时间绑定?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 JAXWS 2.1.7,使用一些类来运行 JAXWS 的apt"以生成 WSDL.对于日期,我使用

Im using JAXWS 2.1.7, using some classes to run through JAXWS's 'apt' to generate the WSDL. For dates, I use

@XmlSchemaType(name="time")  
private Date wakeupTime;

这会生成一个带有 xs:time 的模式,但是当这一切都以 XML 格式出现时,该值类似于

and this generates a schema with xs:time, but when this all comes out in XML, the value is something like

<wakeupTime>1901-01-01T01:00:00 +10</wakeupTime>

我只想要时间部分来!我想我想使用自定义转换器来说明 xs:time + java.util.Date 应该以某种方式打印和解析,但我看不到我可以将绑定文件传递给 apt 例程.我不能(出于历史和其他原因)使用 XMLGregorianCalendar - 它必须是 java.util.Date.如何在 jaxb 中为 apt 工具指定自定义绑定

I want JUST the time portion to come! I think I want to use a custom converter to say that xs:time + java.util.Date should be printed and parsed in such-and-sucha manner, but I cant see that I can pass a bindings file to the apt routine. I can't (for historical & other reasons) use XMLGregorianCalendar - it has to be a java.util.Date. How do I specify a custom binding for the apt tool in jaxb

推荐答案

好的,找到了!阅读此链接:http://weblogs.java.net/blog/2005/04/22/xmladapter-jaxb-ri-ea
并使用 javax.xml.bind.annotation.adapters.XmlAdapter.即

OK, found it! Read this link: http://weblogs.java.net/blog/2005/04/22/xmladapter-jaxb-ri-ea
and use a javax.xml.bind.annotation.adapters.XmlAdapter. i.e.

public class TimeFromDateAdapter extends XmlAdapter<XMLGregorianCalendar, Date>
{
  public Date unmarshal(XMLGregorianCalendar value)
  {
    Calendar cal = value.toGregorianCalendar();
    Date d = cal.getTime();
    return d;
  }

  public XMLGregorianCalendar marshal(Date value)
  {
    Calendar cal = Calendar.getInstance();
    cal.setTime(value);
    try
    {
    XMLGregorianCalendar xmlcal =   DatatypeFactory.newInstance().newXMLGregorianCalendarTime(cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND), 0);
    return xmlcal;
    }
    catch (Exception e)
    {
      e.printStackTrace();
      return null;
    }
  }
}

然后:
@XmlSchemaType(name="time")
@XmlJavaTypeAdapter(mypackage.TimeFromDateAdapter.class)
私人日期唤醒时间;

and then :
@XmlSchemaType(name="time")
@XmlJavaTypeAdapter(mypackage.TimeFromDateAdapter.class)
private Date wakeupTime;

然后你走.

这篇关于如何使用 JAXWS 和 APT 自定义日期/时间绑定?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆