2012-07-18 91 views
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不同的包中。

回答

1

原來需要

+0

這裏定義人的包內的神奇package-info.java文件:http://docs.oracle.com/javase/6/docs/api/javax/xml/bind/annotation /XmlSchema.html – 2012-07-18 23:41:23