English 中文(简体)
How do I customise date/time bindings using JAXWS and APT?
原标题:

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;

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>

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

问题回答

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;
    }
  }
}

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

and away you go.





相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签