Java 如何使用JAXWS和APT定制日期/时间绑定?
我使用JAXWS 2.1.7,使用一些类来运行JAXWS的“apt”来生成WSDL。对于日期,我使用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 我只想让时间来!我想我想使用一个自
@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)
私人约会唤醒时间 然后你就走了