gpt4 book ai didi

web-services - 如何用日期替换 XmlGregorianCalendar?

转载 作者:行者123 更新时间:2023-12-03 11:42:18 25 4
gpt4 key购买 nike

我必须通过 jax-ws 公开一个 ejb 服务层。

我已经使用 jax-ws 和 wsimport 生成了 Web 服务,但我被一个奇怪的事情阻止了;日期被映射到 XmlGregorianCalendar 。
是否可以使用经典的 java Date 代替?
你能告诉我正确的方法吗?

谢谢 。
编辑:
这是我使用的绑定(bind)文件:
谢谢,我稍微修改了您的 xml 并将其与 netbeans 附加到客户端的 web 服务,它工作。这是我使用的绑定(bind):

<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" wsdlLocation="../wsdl/localhost_8080/web_test/Testor.wsdl" >


<jaxb:globalBindings>
<jaxb:javaType name="java.util.Date"
xmlType="xsd:dateTime"
parseMethod="lol.XsdDateTimeConverter.unmarshal"
printMethod="lol.XsdDateTimeConverter.marshalDateTime"
/><jaxb:javaType
name="java.util.Date"
xmlType="xsd:date"
parseMethod="lol.XsdDateTimeConverter.unmarshal"
printMethod="lol.XsdDateTimeConverter.marshalDate"
/>
</jaxb:globalBindings>


</jaxws:bindings>

最佳答案

未经测试,但应该可以工作。首先创建这样的类:

import javax.xml.bind.DatatypeConverter;

public class XsdDateTimeConverter {

public static Date unmarshal(String dateTime) {
return DatatypeConverter.parseDate(dateTime).getTime();
}

public static String marshalDate(Date date) {
final GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(date);
return DatatypeConverter.printDate(calendar);
}

public static String marshalDateTime(Date dateTime) {
final GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(dateTime);
return DatatypeConverter.printDateTime(calendar);
}

}

然后将此添加到自定义 xjb文件:
<javaType
name="java.util.Date"
xmlType="xs:dateTime"
parseMethod="XsdDateTimeConverter.unmarshal"
printMethod="XsdDateTimeConverter.marshalDateTime"
/>
<javaType
name="java.util.Date"
xmlType="xs:date"
parseMethod="XsdDateTimeConverter.unmarshal"
printMethod="XsdDateTimeConverter.marshalDate"
/>
</globalBindings>

未经测试,但应该可以工作。根据我在这里的回答: JAX-WS and Joda-Time?

关于web-services - 如何用日期替换 XmlGregorianCalendar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11109608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com