Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过ApacheCXF使用自定义日期生成正确的WSDL,只使用注释_Java_Web Services_Jaxb_Wsdl_Cxf - Fatal编程技术网

Java 如何通过ApacheCXF使用自定义日期生成正确的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=

我使用的是org.threeten.bp库中的自定义日期,但它与Joda Time相同,或者我猜是Java8次

我能够使用定制的日期表单三个模块开发我的Web服务,使用JAXB适配器管理从/到LocalDate类型

这是我的问题,Web服务在使用soapui或其他程序时运行得非常好,但是公开的WSDL给了我一个字符串类型而不是日期时间

<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的解决方案,但我想使用注释,这可能吗