Java 如何使用JAXWS和APT定制日期/时间绑定?

Java 如何使用JAXWS和APT定制日期/时间绑定?,java,binding,jaxb,jax-ws,apt,Java,Binding,Jaxb,Jax Ws,Apt,我使用JAXWS 2.1.7,使用一些类来运行JAXWS的“apt”来生成WSDL。对于日期,我使用 @XmlSchemaType(name="time") private Date wakeupTime; 这将生成一个带有xs:time的模式,但当这些都以XML形式出现时,其值类似于 <wakeupTime>1901-01-01T01:00:00 +10</wakeupTime> 1901-01-01T01:00:00+10 我只想让时间来!我想我想使用一个自

我使用JAXWS 2.1.7,使用一些类来运行JAXWS的“apt”来生成WSDL。对于日期,我使用

@XmlSchemaType(name="time")  
private Date wakeupTime;
这将生成一个带有xs:time的模式,但当这些都以XML形式出现时,其值类似于

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

我只想让时间来!我想我想使用一个自定义转换器来说明xs:time+java.util.Date应该以这样的方式打印和解析,但是我看不出我可以将绑定文件传递给apt例程。我不能(出于历史和其他原因)使用
XMLGregorianCalendar
——它必须是
java.util.Date
。如何在jaxb中为apt工具指定自定义绑定!阅读此链接:
并使用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;
    }
  }
}
公共类TimeFromDateAdapter扩展了XmlAdapter
{
公开日期解组(XMLGregorianCalendar值)
{
Calendar cal=value.toGregorianCalendar();
日期d=cal.getTime();
返回d;
}
公共XMLGregorianCalendar封送(日期值)
{
Calendar cal=Calendar.getInstance();
校准设定时间(值);
尝试
{
XMLGregorianCalendar xmlcal=DatatypeFactory.newInstance().newXMLGregorianCalendarTime(Calendar.HOUR OF_DAY)、cal.get(Calendar.MINUTE)、cal.get(Calendar.SECOND)、0);
返回xmlcal;
}
捕获(例外e)
{
e、 printStackTrace();
返回null;
}
}
}
然后:
@XmlSchemaType(name=“time”)
@XmlJavaTypeAdapter(mypackage.TimeFromDateAdapter.class)
私人约会唤醒时间

然后你就走了