1
假设我使用wsimport生成的jaxws soap生成的客户端使用了WCF服务。 服务SEI看起来像jaxws复杂类型包
@WebMethod(operationName = "DoSomething", action = "http://mydomain.com/PersonService/Dosomething")
@WebResult(name = "DoSomethingResult", targetNamespace = "http://mydomain.com/")
@RequestWrapper(localName = "DoSomething", targetNamespace = "http://mydomain.com/", className = "webservice.jaxws.DoSomething")
@ResponseWrapper(localName = "DoSomethingResponse", targetNamespace = "http://mydomain.com/", className = "webservice.jaxws.DoSomething")
public Person doSomething(
@WebParam(name = "person", targetNamespace = "http://mydomain.com/")
Person person);
,需要一个复合型的人,回到同一类型的人,并产生DoSomething的样子
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"person"
})
@XmlRootElement(name = "DoSomething")
public class DoSomething {
@XmlElement(nillable = true)
protected Person person;
public Person getPerson() {
return person;
}
public void setPerson(Person value) {
this.person = value;
}
一切工作正常,如果人是同一个包DoSomething的,只要我将Person移动到其他位置,WCF服务无法从Person对象(字段为null或0)中获取任何内容,但WCF的返回值无法通过JAXWS正确保存,尽管没有出现异常。
我注意到,如果它们在同一个包中,那么setPerson将被调用,但如果它们位于不同的包中则不会被调用。
我想知道是否有可能将复杂类型的人放入与DoSomething不同的包中。
这里定义人的包内的神奇package-info.java文件:http://docs.oracle.com/javase/6/docs/api/javax/xml/bind/annotation /XmlSchema.html – 2012-07-18 23:41:23