如何使用 JAXWS 和 APT 自定义日期/时间绑定? [英] How do I customise date/time bindings using JAXWS and 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屋!