java JAXWS wsimport不会保留toString()?
为什么wsimport
不保留我的模型类的toString()
方法?
因此,我的web服务中有一个模型类:
package webservice;
public class Book {
private String title;
private int pages;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getPages() {
return pages;
}
public void setPages(int pages) {
this.pages = pages;
}
@Override
public String toString() {
return "Book [title=" + title + ", pages=" + pages + "]";
}
}
现在,我想为WS-client生成必要的构件:
wsimport -keep http://localhost:8080/LibraryWs/BookWebServiceService?wsdl
并获得结果类:
package webservice;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java class for book complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType name="book">
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="pages" type="{http://www.w3.org/2001/XMLSchema}int"/>
* <element name="title" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "book", propOrder = {
"pages",
"title"
})
public class Book {
protected int pages;
protected String title;
/**
* Gets the value of the pages property.
*
*/
public int getPages() {
return pages;
}
/**
* Sets the value of the pages property.
*
*/
public void setPages(int value) {
this.pages = value;
}
/**
* Gets the value of the title property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getTitle() {
return title;
}
/**
* Sets the value of the title property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setTitle(String value) {
this.title = value;
}
}
因此没有toString:)我在哪里可以找到关于此行为的规范,或者如何让jax ws在我的WSDL中显式地包含该方法?谢谢
# 1 楼答案
这实际上是一个愚蠢的问题,因为在WSDL中,只转换类成员变量,而不转换方法。它们被编码为
complexType
。 我想说,如果您想要公开一个方法,它必须进入@WebService
并(可选地)用@WebMethod
注释。否则,只有Web服务使用的类的属性才会进入WSDL。 所以这里http://localhost:8080/LibraryWs/BookWebServiceService?xsd=1
我们将有: