pde*_*dem 5 java wsdl web-services cxf jaxb
我正在使用来自 org.threeten.bp 库的自定义日期,但它应该与 Joda Time 相同,或者我猜是 Java8 次。
我能够使用自定义日期表单 Threeten 模块开发我的 Web 服务,使用 JAXB 适配器从/到 LocalDate 类型进行编组。
这是我的问题,webservice 使用soapui 或其他程序运行得非常好,但是暴露的WSDL 给了我一个String 类型而不是dateTime
<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>
Run Code Online (Sandbox Code Playgroud)
我期待type="xs:dateTime"为我的日期,但我得到了 type="xs:string"
物体:
public class MyDTO implements Serializable {
public LocalDateTime testDate;
public String code;
}
Run Code Online (Sandbox Code Playgroud)
我尝试在 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;
Run Code Online (Sandbox Code Playgroud)
我的适配器在这里:https : //github.com/pdemanget/jaxb-threeten-adapters
它们从 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
Run Code Online (Sandbox Code Playgroud)
在类级别使用注释
@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.
Run Code Online (Sandbox Code Playgroud)
在包级别 使用注释@XmlSchemaTypes:我选择的解决方案在包级别允许,但它根本不起作用,它似乎因适配器使用而过载@XmlJavaTypeAdapters。
我还找到了一些基于 XML 的解决方案,但我想使用注释,这可能吗?
| 归档时间: |
|
| 查看次数: |
957 次 |
| 最近记录: |