我有几个wsdl文件,差不多几百个。每当我为它们创建客户机jaxb客户机类时,jaxb就会自动将所有日期/时间字段映射到XMLGregorianCalender。经过大量的谷歌搜索,我发现提供一个单独的绑定文件是唯一的解决方案。
<bindings xmlns="http://java.sun.com/xml/ns/jaxb" version="2.0" >
<globalBindings>
<javaType name="java.util.Date" xmlType="xsd:dateTime" />
</globalBindings>
</bindings>
import java.util.Date;
import java.util.GregorianCalendar;
import javax.xml.bind.annotation.adapters.XmlAdapter;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import java.util.Calendar;
import javax.xml.bind.annotation.adapters.XmlAdapter;
public class DateAdapter extends XmlAdapter<XMLGregorianCalendar, Date> {
@Override
public XMLGregorianCalendar marshal(Date date) throws Exception {
GregorianCalendar gregorianCalendar = new GregorianCalendar();
gregorianCalendar.setTime(date);
XMLGregorianCalendar xmlGregorianCalendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(gregorianCalendar);
return xmlGregorianCalendar;
}
@Override
public Date unmarshal(XMLGregorianCalendar xmlGregorianCalendar) throws Exception {
return xmlGregorianCalendar.toGregorianCalendar().getTime();
}
}
<bindings xmlns="http://java.sun.com/xml/ns/jaxb" version="2.0" >
<globalBindings>
<javaType name="java.util.Date" xmlType="xsd:dateTime"
parseMethod="DateAdapter.marshal"
printMethod="DateAdapter.unmarshal" />
</globalBindings>
</bindings>
C:\Users\stuart\Desktop\code>wsimport -s src -d gen -b cust.txt http://localhost:8080/webservice-jaxws/DummyService?wsdl
parsing WSDL...
generating code...
compiling code...
C:\Users\stuart\Desktop\code\src\org\w3\_2001\xmlschema\Adapter1.java:13: cannot find symbol
symbol : variable DateAdapter
location: class org.w3._2001.xmlschema.Adapter1
return (DateAdapter.marshal(value));
^
C:\Users\stuart\Desktop\code\src\org\w3\_2001\xmlschema\Adapter1.java:17: cannot find symbol
symbol : variable DateAdapter
location: class org.w3._2001.xmlschema.Adapter1
return (DateAdapter.unmarshal(value));
^
2 errors
compilation failed, errors should have been reported
我将自定义设置保存在wsimport命令中给出的cust.txt中,DateAdapter类源文件也在同一个目录中。这个班没有包裹。下面是我的目录结构。
³ cust.txt
³ DateAdapter.java
³
ÃÄÄÄgen
³ ÃÄÄÄorg
³ ³ ÀÄÄÄw3
³ ³ ÀÄÄÄ_2001
³ ³ ÀÄÄÄxmlschema
³ ³ Adapter1.class
³ ³
³ ÀÄÄÄwebservice
³ ÀÄÄÄjaxws
³ ÀÄÄÄgenerated
³ GetBook.class
³ GetBookResponse.class
³ ObjectFactory.class
³ package-info.class
³ Book.class
³ BookService.class
³ BookServiceImpl.class
³ ReturnBook.class
³ ReturnBookResponse.class
³
ÀÄÄÄsrc
ÃÄÄÄorg
³ ÀÄÄÄw3
³ ÀÄÄÄ_2001
³ ÀÄÄÄxmlschema
³ Adapter1.java
³
ÀÄÄÄwebservice
ÀÄÄÄjaxws
ÀÄÄÄgenerated
GetBook.java
GetBookResponse.java
ObjectFactory.java
package-info.java
Book.java
BookService.java
BookServiceImpl.java
ReturnBook.java
ReturnBookResponse.java
通过使用与您所做的相同的绑定声明解决了这个问题,但我的DateAdapter实际上如下所示:
public class DateAdapter {
private DateAdapter() {}
public static String marshal(Date date) {
Calendar cal = GregorianCalendar.getInstance();
cal.setTime(date);
return DatatypeConverter.printDateTime(cal);
}
public static Date unmarshal(String xmlDate) {
return DatatypeConverter.parseDate(xmlDate).getTime();
}
}
它就像一种魅力。XML端我有dateTime,java端我有java.util.Date。我实际上制作了另一个使用java.time.instant而不是Date的程序,我发现这更容易使用。
这里有一个wsdl服务链接:http://www.webservicemart.com/uszip.asmx?WSDL 如果我运行以下命令: wsimport-s src-d binhttp://www.webservicemart.com/uszip.asmx?WSDL 这个命令在/src目录下产生Java源代码并编译。相对于发出命令的目录的/bin目录中的类文件。这些生成的类可以用来访问远程w
我有一个具有WSDL定义的非常基本的WCF服务,如下所示: 我想添加名称空间xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance“根据定义,但我不知道在哪里以及如何。 如何添加该名称空间?非常感谢。
在上一章Spring -WS - First Application中 ,我们使用Spring WS Configuration自动生成了WSDL。 在这种情况下,我们将展示如何使用Spring WS公开现有的WSDL。 步 描述 1 在Spring WS-First Application章节中解释,在com.wenjiangs包下创建一个名为leaveService的项目。 2 在/ WEB-
有问题的webservice的客户机报告说,如果存在此,他们无法生成客户机存根(使用C#)。如何将其更改为?谢了。
下面给出了一个WSDL文件,用于演示简单的WSDL程序。 假设这个服务提供了一个名称为的公共可用函数。 此函数需要单个字符串参数并返回单个字符串问候语。 例如,如果传递参数值为:,那么服务函数将返回问候语:。 示例 HelloService.wsdl 文件的内容如下所示 - 示例分析说明 定义 - 类型 - 使用内置数据类型,它们在XMLSchema中定义。 消息 - - 参数 - 问候的返回值
主要内容:1. WSDL元素,2. WSDL文档结构WSDL将Web服务分解为三个特定的,可识别的元素,这些元素可以在定义后组合或重用。 可以单独定义的WSDL的三个主要元素是 - 类型 操作 绑定 WSDL文档有各种元素,但它们包含在这三个主要元素中,可以作为单独的文档开发,可以将它们组合或重用以形成完整的WSDL文件。 1. WSDL元素 WSDL文档包含以下元素 - 定义 - 它是所有WSDL文档的根元素。 它定义Web服务的名称,声明在整个