Web services web服务方法中java.util.Date输入/输出的空值

Web services web服务方法中java.util.Date输入/输出的空值,web-services,jakarta-ee,netbeans,jaxb,jax-ws,Web Services,Jakarta Ee,Netbeans,Jaxb,Jax Ws,我用jax ws和netbeans 7的向导创建了一个Web服务,这是我第一次。 为了使用java.util.Date而不是XmlGregorianCalendar,我使用以下xml修改了客户端的Web服务: <?xml version="1.0" encoding="UTF-8"?> <jaxws:bindings node="wsdl:definitions/wsdl:types/xsd:schema" xmlns:jaxws="http

我用jax ws和netbeans 7的向导创建了一个Web服务,这是我第一次。 为了使用java.util.Date而不是XmlGregorianCalendar,我使用以下xml修改了客户端的Web服务:

<?xml version="1.0" encoding="UTF-8"?>
<jaxws:bindings  node="wsdl:definitions/wsdl:types/xsd:schema"
                 xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
                               xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
                                xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
                                xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <jaxb:globalBindings>
        <jaxb:serializable/>
           <jaxb:javaType name="java.util.Date" xmlType="xsd:dateTime"/>
        </jaxb:globalBindings>
</jaxws:bindings>
现在使用日期代替XmlGregorianCalendar,并生成适配器1:

public class Adapter1
    extends XmlAdapter<String, Date>
{


    public Date unmarshal(String value) {
        return new Date(value);
    }

    public String marshal(Date value) {
        if (value == null) {
            return null;
        }
        return value.toString();
    }

}
当我在适配器中添加system.out.println时,我看到日期被接收/发送到服务器,但是如果我使用ws的方法,我在日期字段/参数上总是得到null

谢谢。

生成的XmlAdapter不会执行所需的转换。默认XmlAdapter需要以下功能:

Foo foo1 = new Foo(foo2.toString());
在这种情况下无效:

Date date1 = new Date(date2.toString());
您需要编写一些转换代码,并从外部绑定文件中引用它:

<jxb:bindings xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb" version="2.1">
    <jxb:bindings schemaLocation="format.xsd">
        <jxb:bindings node="//xs:element[@name='my-date']">
            <jxb:property>
                <jxb:baseType>
                    <jxb:javaType name="java.util.Date"
                        parseMethod="org.example.DateFormatter.parseInt"
                        printMethod="org.example.DateFormatter.printInt" />
                </jxb:baseType>
            </jxb:property>
        </jxb:bindings>
    </jxb:bindings>
</jxb:bindings>
更多信息


谢谢你的回答。对于新手来说,这类事情真的很复杂:p。是否有其他方法可以简单地将java.util.Date与jax ws一起使用?谢谢