Java 如何通过ApacheCXF使用自定义日期生成正确的WSDL,只使用注释
我使用的是org.threeten.bp库中的自定义日期,但它与Joda Time相同,或者我猜是Java8次 我能够使用定制的日期表单三个模块开发我的Web服务,使用JAXB适配器管理从/到LocalDate类型 这是我的问题,Web服务在使用soapui或其他程序时运行得非常好,但是公开的WSDL给了我一个字符串类型而不是日期时间Java 如何通过ApacheCXF使用自定义日期生成正确的WSDL,只使用注释,java,web-services,jaxb,wsdl,cxf,Java,Web Services,Jaxb,Wsdl,Cxf,我使用的是org.threeten.bp库中的自定义日期,但它与Joda Time相同,或者我猜是Java8次 我能够使用定制的日期表单三个模块开发我的Web服务,使用JAXB适配器管理从/到LocalDate类型 这是我的问题,Web服务在使用soapui或其他程序时运行得非常好,但是公开的WSDL给了我一个字符串类型而不是日期时间 <xs:complexType name="MyDTO"> <xs:sequence> <xs:element minOccurs=
<xs:complexType name="MyDTO">
<xs:sequence>
<xs:element minOccurs="0" name="testDate" type="xs:string"/>
<xs:element minOccurs="0" name="code" type="xs:string"/>
<xs:/sequence>
<xs:/complexType>
我尝试在package-info.java级别使用注释:
@javax.xml.bind.annotation.XmlSchemaTypes({
@javax.xml.bind.annotation.XmlSchemaType(name = "dateTime", type = org.threeten.bp.LocalDate.class),
@javax.xml.bind.annotation.XmlSchemaType(name = "dateTime", type = org.threeten.bp.LocalDateTime.class),
@javax.xml.bind.annotation.XmlSchemaType(name = "dateTime", type = org.threeten.bp.LocalTime.class) })
@javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters({
@XmlJavaTypeAdapter(type = LocalDate.class, value = LocalDateXmlAdapter.class),
@XmlJavaTypeAdapter(type = LocalTime.class, value = LocalTimeXmlAdapter.class),
@XmlJavaTypeAdapter(type = LocalDateTime.class, value = LocalDateTimeXmlAdapter.class)})
package mypackage.dto;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.threeten.bp.LocalDate;
import org.threeten.bp.LocalDateTime;
import org.threeten.bp.LocalTime;
import com.migesok.jaxb.adapter.javatime.LocalDateTimeXmlAdapter;
import com.migesok.jaxb.adapter.javatime.LocalDateXmlAdapter;
import com.migesok.jaxb.adapter.javatime.LocalTimeXmlAdapter;
我的适配器在这里:
它们从LocalDate转换为String,我完全不想使用java.util.Date
我要管理大约300个类,所以更改每个对象的类型,或者给出一个特定的注释并不是我想要做的
无论如何,我尝试了一些不同的选择
在字段级别使用注释
@javax.xml.bind.annotation.XmlSchemaType(name = "dateTime")
public LocalDateTime testDate;
//it works well on field, but not on package level and i would have 300classes to modify
@XmlType(name = "dateTime", namespace = "http://www.w3.org/2001/XMLSchema")
class LocalDateTime
//It works well on Class, bu not on package level, and I would have to patch the library I use, This is rally impossible.
在类级别使用注释
@javax.xml.bind.annotation.XmlSchemaType(name = "dateTime")
public LocalDateTime testDate;
//it works well on field, but not on package level and i would have 300classes to modify
@XmlType(name = "dateTime", namespace = "http://www.w3.org/2001/XMLSchema")
class LocalDateTime
//It works well on Class, bu not on package level, and I would have to patch the library I use, This is rally impossible.
使用@XmlSchemaTypes
在包级别上的注释:我选择的解决方案在包级别上是允许的,但它根本不起作用,它似乎因使用@XmlJavaTypeAdapters
的适配器而过载
我还找到了一些基于XML的解决方案,但我想使用注释,这可能吗